Net分布式系统之五:微服务架构
分布式和微服务的关系因⼯作较忙,抽时间将框架遇到的问题和框架升级设计进⾏记录。
⼀、背景&问题
之前框架是⼀个基于SOA思想设计的分布式框架。各应⽤通过服务⽅式提供使⽤,服务之间通信是RPC⽅式调⽤,具体实现基于.NET 的WCF通信平台。框架存在如下2个问题:
1、⾼并发处理能⼒不⾜。⼀当⾼并发请求,可能出现多个服务待定处理,导致整个系统出现瓶颈。
2、随着移动端⼴泛应⽤,服务不能灵活⽀持APP应⽤。
3、系统持续集成部署过于繁琐,遇到问题不好定位。
基于以上存在问题升级框架,结合当前主流的架构思想,将系统进⾏服务化思维,就是“微服务架构”。
⼆、微服务架构
微服务架构(Microservices Architecture)是将系统拆分为多个服务,俗称为应⽤服务。应⽤服务实现单⼀、具体的业务应⽤功能,⽀持独⽴部署维护,多个应⽤服务构建成系统。应⽤服务之间通过轻量级
通信框架进⾏,并且⽀持应⽤服务⽤不同技术或者平台实现。微服务架构是SOA架构设计思想另⼀种实现⽅式。微服务架构有如下特点:
1、微服务架构好处
(1)横向扩展应⽤服务提升系统并发处理能⼒
(2)应⽤服务独⽴部署维护,有利于迭代开发升级持续部署
(3)架构灵活⽀持多种技术实现
(4)有利于应⽤服务实现⾼可⽤性
2、微服务架构不⾜
(1)对系统设计有⼀定要求,尤其是拆分技术应⽤服务接⼝
(2)导致系统实现复杂度的提⾼
(3)需要确保系统数据⼀致性机制
(4)导致系统维护要求和成本提⾼
系统是否需要采⽤微服务架构进⾏构建是由项⽬需求决定。采⽤微服务架构进⾏设计构建系统,对团队成员能⼒⽐传统要求⾼,尤其是设计能⼒。
三、框架设计原则
1、可扩展:⽀持不修改系统功能,按需扩展服务器资源。
2、⾼可⽤:⽀持分布式部署双机热备机制,满⾜系统⾼可⽤性的要求。
3、⾼并发:⽀持快捷扩张应⽤服务处理能⼒,提升系统处理能⼒,满⾜并发请求。
4、安全性:访问安全通过统⼀认证访问;信息安全通过加解密、签名传输;⽹络安全通过⽹络隔离及防⽕墙;数据安全通过定时备份及⾼容错能⼒。
5、⼀致性:采⽤数据最终⼀致性策略。
四、框架总体设计
图1- 系统架构⽰意图
如图所⽰,系统架构基于SOA架构设计思想,并且采⽤微服务架构⽅式进⾏设计和构建。将系统呈现
和数据进⾏分离。系统呈现基于⽹页进⾏实现,⽀持多种前端UI框架整合及⾃定义开发;数据由应⽤服务提供,统⼀通过“⽹关API”提供使⽤。架构⽀持通过⽹络层、应⽤层的负载均衡中间件等,实现⾼可⽤和并发处理能⼒。架构将⼀些基础公共功能抽离构建成中间件。
1、⽹关API:应⽤服务通过⽹关API统⼀对外提供服务。⽹关API基于http协议、以restful⽅式提供统⼀服务接⼝,约定接⼝通信协议,⽀持系统呈现的功能,以轻量级的通信⽅式,满⾜不同客户端。⽹关API实现统⼀数据访问权限控制、路由应⽤服务、限流等功能。
2、消息平台:负责应⽤服务之间更新同步信息,将原有系统架构分布式事务调⽤更新信息的⽅式,调整为通过消息异步发布/订阅处理,保证数据最终⼀致性,应⽤服务之间降低耦合度和强依赖关系。⾼并发能⼒下,取得缓存作⽤。
3、服务注册监控中⼼:负责应⽤服务注册发布登记,同时监控应⽤服务接⼝运⾏情况,⽀持动态控制应⽤服务接收请求,实现“去中⼼化”服务控制。组件实现服务注册登记、监控等功能。
4、认证中⼼:负责架构访问统⼀⾝份认证。通过⽤户⼝令和权限进⾏控制访问。结合“⽹关API”实现安全访问、限流等功能,同时实现页⾯管理功能。
5、⽇志管理系统:负责记录系统⽇志,提供服务接⼝和组件,业务代码通过异步⽅式将⽇志信息传输到“消息平台”,⽇志管理系统订阅“消息平台”的⽇志信息进⾏处理存储。同时提供⽇志管理功能
6、缓存中⼼:基于Redis分布式内存数据库,搭建架构统⼀缓存中⼼,提供统⼀缓存服务。
五、软件架构设计
图2- 软件架构⽰意图
如图所⽰,系统架构以微服务架构⽅式进⾏开发,从切⾯观察每个应⽤服务进⾏垂直独⽴开发,根据职责划分层次,从上⽽下分为四个层次,分别为Web层、服务接⼝层、业务逻辑层及数据访问层。Web层主要负责系统功能呈现表达,直接⾯对⽤户;服务接⼝层主要负责提供标准化服务接⼝,与呈现层对接;业务逻辑层主要实现应⽤业务逻辑,是应⽤服务核⼼部分;数据访问层负责数据持久化,⽀持业务逻辑层。各层次之间通过接⼝进⾏隔离,有利于后续维护扩展,减低依赖和影响。
应⽤服务完成开发后进⾏集成部署。Web层将根据约定集成到Web应⽤容器,其余层次构建为应⽤服务进⾏部署,并将服务接⼝进⾏注册登记发布使⽤。
六、结语
基础架构⼤致设计就这样,还需要考虑实施部署,可以考虑云平台弹性资源,再结合docker容器技术。
后续再逐步介绍相关基础组件设计及实现原理。技术框架重于解决问题,设计依赖需求,需求来源实际业务场景。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论