微服务
维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。
微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常
● 有自己的堆栈,包括数据库和数据模型;
● 通过REST API,事件流和消息代理的组合相互通信;
● 和它们是按业务能力组织的,分隔服务的线通常称为有界上下文。
尽管有关微服务的许多讨论都围绕体系结构定义和特征展开,但它们的价值可以通过相当简单的业务和组织收益更普遍地理解:
● 可以更轻松地更新代码。
● 团队可以为不同的组件使用不同的堆栈。
● 组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的浪费和成本,因为单个功能可能面临过多的负载。
分层架构
分层架构也叫N层架构。是大多数Jave EE应用的实际标准,因此很多的架构师,设计师,还有程序员都知道它。
- 网关层:
为业务平台提供内外网隔离、统一鉴权、限流、降级等,提高系统整体安全性稳定性
- 网关域仅负责通用平台的进出口请求业务分发、协议转换、权限控制等通用功能,不提供任何实际业务代码。
- 平台各个业务系统均不提供外网权限,外部系统主动请求平台通过api网关转发。
- sso服务仅提供多渠道登录鉴权、分布式session、AccessToken验证功能,不提供其他业务逻辑。
- 业务层
基于能力层功能,完成平台各个业务流程组织,根据业务范围做业务编排
- 业务域仅负责不同业务流程的组织,而不负责核心领域数据的持久化及状态维护(例如业务域负责微信授权注册、网站手机注册2种不同流程主旨,但是实际的用户创建和持久化通过调用能力层完成)
- 业务域仅负责不同业务流程的组织,而不负责访问权限、登录会话等信息维护。(权限和会话统一由网关层统一维护)
- 能力层
核心业务领域模型、标准作业流程维护,对外输出通用能力,一边个性化业务流程组织
- 能力域各业务系统仅负责核心领域模型等持久化、状态流转(例如:用户服务)
- 业务域各个系统通过RPC接口调用能力域的通用能力。(例如注册)
- 数据域
各个业务板块涉及的数据保存、缓存、等功能架构
- 数据域统一由运维、数仓维护,各业务系统不再搭建数据存储服务。
- 各个业务系统根据业务需求申请特定规模的数据存储配额和账号。
- 数据域暂时以购买云服务为主,自主搭建为辅,以提升系统底层数据稳定性。
- 运维域
平台运维管控相关业务架构,包括系统监控、运维保障等
- 仅提供运维相关工具类服务,不实际涉及业务逻辑。
注意事项
分层架构是一个很可靠的架构模式。它适合大多数的应用。如果你不确定在项目中使用什么架构,分层架构是再好不过的了。然后,从架构的角度上来说,选择这个模式还要考虑很多的东西。