一、问题背景
在之前的项目开发中,因为团队和技术限制,服务以小服务(微服务)的模式进行开发,各自服务的web端使用独立的访问域名;从用于测看,一个产品用户会点击出大量的不同域名,在统一认证和用户体验上都是一个比较糟糕的实现。基于此问题,团队考虑一个透明的将多个web站点集成在一个域名下的解决方案。
目前的域名示例:
- 课程:http://webfront-course.sdp.101.com/ndu/course/11600ebe-3314-4c73-93db-5c2f4583a345
- 培训:http://webfront-train.sdp.101.com/ndu/train/b89672d7-ab6d-4b58-9bdf-c8e69fd83017
- 线下课程:http://business-course-gateway.sdp.101.com/ndu/course/06e9301a-0438-479e-92a6-c79b8ccfb72c
- 测评:http://elearning-onlineexam-gateway.sdp.101.com/ndu/online_exam/prepare?online_exam_id=b6c627aa-ec06-48c6-bda9-514fae4580b
以上仅为举例,实际一个产品中涉及域名约有50+
二、解决方案
在技术选型上,前期考虑对portal项目做定制开发,即由已给产品测小团队进行portal项目定制开发。按照产品进行web端二次开发,有该团队按产品需求进行定制开发,对后端各功能服务的页面、api进行二次开发封装。考虑到成本和公司现状,工作量是一个巨大挑战。而且,通常同类产品的页面表现是趋同的。鉴于实际问题,本方案被否决。
目前团队,应用接入层,主要是7层接入(nginx、kong);由此在考虑是否可在应用上层有没有一个透明解决方案。能够达到产品测对用户表现始终是一个访问域名,对服务的开发团队不引入额外的开发工作。
考虑在L7接入层,制定后端服务的代理规范、产品域名规范 、服务的友好别名规范,在L7 透明使用http proxy,将产品的域名的一级目录,代理至后端各服务实例。
涉及到的具体约定和规范
- 新增一组用于产品册的通配域名(如 *.e.101.com);有需求的情况,也可以绑定产品自有域名(www.hbeducloud.com)
- 制定工程院内的统一域名服务别名规范,将产品域名下uri的第一级目录(path)定义为服务的友好别名(如,course 标识webfront-course服务),并将规范持久存储为一个字典,全局唯一。
大致流程:
用户请求到达L7接入层后,在接入层通过胶水胶水代码,读取服务的友好别名字典,将用户请求代理到实际后端服务。
三、方案优点
- 相对透明的解决产品需求,不增加服务开发团队工作量
- 重新规范web用户认证技术方案,可以使用cookie票据等简单方案解决web测用户认证工作
- url 更亲民易识别
四、落地效果
使用统一域名方案后,产品用户访问到的所有请求均可在一个域名下,如 xuexi.101.com; xuexi.101.com/course/ xuexi.101.com/exam/
相关推荐
─71.短链平台整合SkyWalking链路追踪实战(4节) │ 71.1-AlibabaCloud微服务整合SkyWalkingAgent实战.mp4 │ 71.2-微服务打包...│ 79.3-前后端联调-前端不能识别雪花算法id解决方案.mp4 │ 79.4-短链平台
─71.短链平台整合SkyWalking链路追踪实战(4节) │ 71.1-AlibabaCloud微服务整合SkyWalkingAgent实战.mp4 │ 71.2-微服务打包...│ 79.3-前后端联调-前端不能识别雪花算法id解决方案.mp4 │ 79.4-短链平台
─71.短链平台整合SkyWalking链路追踪实战(4节) │ 71.1-AlibabaCloud微服务整合SkyWalkingAgent实战.mp4 │ 71.2-微服务打包...│ 79.3-前后端联调-前端不能识别雪花算法id解决方案.mp4 │ 79.4-短链平台
─71.短链平台整合SkyWalking链路追踪实战(4节) │ 71.1-AlibabaCloud微服务整合SkyWalkingAgent实战.mp4 │ 71.2-微服务打包...│ 79.3-前后端联调-前端不能识别雪花算法id解决方案.mp4 │ 79.4-短链平台
标题中的"Laravel开发-cors-laravel"指的是在Laravel项目中解决跨域问题的一个解决方案。描述中提到的"Laravel/Lumen提供轻量级CORS中间件"是指专门为Laravel和Lumen这两个PHP微服务框架设计的一套轻量级中间件,...
**Laravel 开发 - Lumen CORS 模块详解** 在 Web 应用程序开发中,跨源资源共享(CORS...理解并正确使用 CORS 是现代 Web 开发中的重要一环,而 `dusterio/lumen-cors` 为 Lumen 开发者提供了一种简单易用的解决方案。
为了解决这个问题,Web开发者需要采用各种跨域访问的解决方案。 同源策略是一种安全机制,旨在保护用户数据,防止恶意网站通过脚本获取并操作其他网站的信息。但有时,我们需要打破这种限制,例如实现API调用、数据...
总结来说,Java中的JWT令牌结合微服务网关,为微服务架构提供了安全、高效和灵活的解决方案。JWT用于认证,而微服务网关则作为系统的核心组件,处理了诸如安全、监控、认证和路由等复杂任务,使得微服务架构更加稳定...
### 微服务架构下的身份认证与鉴权方案详解 #### 引言 随着软件开发模式的不断演进,从最初的单体应用发展到分布式架构,再到现今流行的微服务架构,安全性和灵活性的需求变得愈发重要。在这样的背景下,如何在复杂...
#### 一、微服务架构中的跨域问题与解决方案 在微服务架构下,不同的服务可能会部署在不同的域名或端口上,这就会引发跨域问题。跨域是指从一个域(domain)的网页去请求另一个域的资源。当客户端尝试请求不同源...
- 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。 - 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统...
在Kubernetes(k8s)集群中,Ingress是一个关键组件,它作为外部网络流量进入集群的入口,扮演着边缘路由器或集群网关的角色。...正确配置和选择合适的Ingress解决方案对于k8s集群的高效运行至关重要。
根据提供的文件信息,我们可以深入探讨Amazon的云计算服务与基于AWS的解决方案。Amazon Web Services (AWS) 是全球领先的云服务平台之一,提供了丰富的工具和服务来支持企业的数字化转型和创新。接下来,我们将详细...
Spring Cloud Gateway 请求跨域问题解决方案 Spring Cloud Gateway 作为一种基于微服务架构的API Gateway,提供了许多有用的特性,如路由、负载均衡、熔断器等。但是,在使用 Spring Cloud Gateway 时,经常会遇到...
《Web应用软件架构的优化与演进》这篇文档主要探讨了随着Web应用访问量增长,其架构...这一过程涉及到服务器资源管理、负载均衡策略、Session一致性解决方案以及数据库优化等多个方面,是Web开发技术的重要研究领域。
在IT行业中,多租户(Multitenancy)是一种软件架构模式,它允许单个应用...这样的系统设计能够提供高效且灵活的多租户解决方案,满足SaaS应用的需求,为每个租户提供独立的服务体验,同时保证了数据安全和性能效率。
接着,打开`ecology\WEB-INF\web.xml`文件,在第一次出现`<servlet-mapping>`之前添加以下内容: ```xml <servlet-name>MobileXmlRpcServlet</servlet-name> <servlet-class>org.apache.xmlrpc.webserver....
它是一款专注于Web登录系统的工具,特别适用于需要快速构建SSO解决方案的Java开发者。通过在客户端使用Cookie存储认证信息,Kisso能够在多个应用程序之间实现无缝切换,提高用户体验,同时减轻服务器端的负担。 二...
Spring Cloud Alibaba 是一套基于 Spring Boot 和 Spring Cloud 的微服务解决方案,旨在简化开发人员在构建分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、...
随着互联网技术的不断发展,Nginx将继续发挥其优势,适应新的挑战,为用户提供更加强大和高效的Web服务解决方案。未来,Nginx将在云计算、容器化技术等方面发挥更大的作用,进一步推动Web服务的发展。