微服务发展
微服务经历了单体应用->rpc->微服务等发展阶段,每个阶段都解决了不同的问题,简单描述如下:
● 单体应用->rpc
解决了单体应用复杂性的问题。每个服务可以独立扩展。
● rpc->微服务
强化了服务治理相关功能,如服务发现、服务监控、流量管理、负载均衡、重试熔断等。
基于微服务的应用描述
springcloud归属于应用层面,以基于springboot的业务应用为基础,多出了服务治理相关内容,其部署运行需要底层的支撑,具体可以是物理机/虚拟机/容器等。下图为以推荐服务/AB测试服务为基础的微服务所涉及的应用节点和资源层依赖:
![](https://img.haomeiwen.com/i2413244/60cabd0b1bd395c3.png)
我们部门承担了研发和运维的职责,在完成应用开发的同时需要兼顾运维功能,因此在进行设计的时候需要考虑功能、服务治理、底层资源的调度支撑等方面的内容。开发框架选择需求具体如下:
- 能够适配业务范围扩展
该部分由springcloud满足。 -
能够比较方便的满足节点监控/容量管理等底层需求
该部分功能实现需要底层支持,目前主流实现方案为docker作为应用运行容器,使用k8s作为容器编排工具。
从而实现应用的部署/回滚、容量管理、自我修复等功能。附带实现了服务发现、负载均衡、密钥与配置管理等功能。
springcloud与k8s从各自的角度出发,实现了服务治理相关功能,部分功能点有重叠,对比如下:
image.png
完成基于微服务的应用开发,并且兼顾部署运维相关功能,需要将springcloud与k8s融合使用。具体融合示意图如下:
![](https://img.haomeiwen.com/i2413244/89f3daf13586a176.png)
在应用层与运行环境分割线上的组件为需要进行融合的组件。如springcloud官方提供了spring cloud kubernetes方案来实现该融合。腾讯提供了spring-cloud-tencent方案实现springcloud与腾讯k8s云服务的融合。
很多公有云厂商将运行环境与服务治理能力包装起来,提供一站式的微服务接入能力。
部署结构
目前推荐服务与AB测试服务在k8s上部署结构如下图所展示:
![](https://img.haomeiwen.com/i2413244/882c1d197d7d2710.png)
引入springcloud后,推荐服务与AB测试两个节点作为核心业务节点,部署方式不发生变化。新引入的服务发现、监控、限流、路由等非功能节点,这些节点作为k8s中服务节点进行部署,为核心业务节点提供服务治理功能,具体如下:
![](https://img.haomeiwen.com/i2413244/e3e8ee2006e45f0c.png)
网友评论