传统服务
orgservice.png传统的企业级应用是单体应用,一般是分层结构,如表现层/应用层/领域层/数据层,这主要是水平切分的思想。一般的架构图如下:
上述的好处是有条件的:应用不那么复杂。对于大规模的复杂应用,巨石型应用会显得特别笨重:要修改一个地方就要将整个应用全部部署(PS:在不同的场景下优势也变成了劣势);编译时间过长;回归测试周期过长;开发效率降低等。另外,巨石应用不利于更新技术框架,除非你愿意将系统全部重写
微服务架构
微服务是为适应当前互联网快速发展,互联网应用快速迭代、快速部署而产生的技术架构,微服务强调的是在共享硬件资源的基础上隔离,缺乏软件共享;相当于敏捷的建立了很多小烟囱系统,降低耦合.
微服务所设计的每个微服务都要非常容易被抛弃、被替换。拥抱不断变化的业务,快读迭代开发。微服务设计目标是降低系统复杂度,提高开发生产力,是适合敏捷方法快速建立持续改进的系统,例如互联网应用.
server2.png微服务架构图:
微服务网关
微服务在每个子服务的上层封装了一层网关服务层。
微服务网关存在的意义与价值:
- 微服务每个服务可以独立部署并且互相隔离,对外提供不同服务,这样会造成客户端从原来传统服务的"1对1”变成了微服务体系下的"1对N",微服务体系下解决"1对N"问题方案就是在所有微服务的上层在抽象封装一层,微服务网关层。用于对外统一提供服务,屏蔽内部独立服务的访问,同时子服务的添加,移除对外无感知,增加了系统的扩展性。
- 与传统单一服务对比,微服务由于分割成无数个单独的子服务,那么在,鉴权、流控、校验等预处理的逻辑,每个单独子服务都需要编写,造成代码多处冗余,同时业务变动也需要所有的子服务变更。那么将这些预处理逻辑抽象统一到上层网关层做就变得很有意义了,子服务只需关注自身业务逻辑的处理。
开源微服务网关:
- zuul :netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用,同时与springcloud无缝的集成
- springcloud-gateway:是spring团队开发非阻塞的IO 的API网关。
网友评论