一:进行服务分层
分层:是一种很常见的架构办法。比方咱们常见的网络协议 TCP/IP 的分层。分层之后,各层各司其职,互相隔离开来。
最简略的服务分层 :
第一层:接入层
外部设备拜访的对立接入层。
第二层:聚合服务层
对上层的根底服务做一些聚合,剪裁的工作,适配下层不同设施的数据输入。
第三层:根底服务层
比拟细粒度的微服务层,提供根底的外围服务,公共服务。
有了上面的根底服务层,还有下面的聚合层干什么呢?
比方:有时候 PC 端和 APP 端的数据显示不一样,手机屏幕比拟小,可能显示的数据少些,而 PC 端显示的数据多些,这样就须要对不同的接入层设施的数据做一些裁剪的工作。
比方:上面的根底服务层,分的服务粒度可能比拟细,接入层 APP 须要一个性能时,有时须要拜访几个根底服务,之后 APP 在聚合这些服务数据,这样效率就很差,不如咱们在服务端间接聚合服务,而后把聚合好的数据间接发给 APP,这样拜访效率就能够晋升,从而晋升用户体验。
下面只是一个最根本的服务分层,能够在这个根本分层构造之上进行扩大。
二:微服务总体架构图
学习杨波老师的《微服务架构》外面的一张图,略微做了一些批改:
下面的总体技术架构图一共分了 6 层
- 1. 接入层
也能够叫负载平衡层,把内部的流量引入到零碎中来。个别负载平衡软件有 nginx,lvs,还有各大云服务厂商本人的负载平衡服务。
- 2. 网关层
外部接口的一些认证、平安、鉴权、过滤、限流等服务,个别处于这一层。这一层把外部的服务接口做一层平安隔离,爱护外部服务,同时也能够实现一些其余需要,比方后面讲的鉴权、黑名单过滤等等需要。所以这一层在微服务架构中是很重要的一层。 - 3. 业务服务层
根底服务和聚合服务
- 根底服务:依据业务特点又能够分为外围根底服务、公共服务、中间层服务等。
- 聚合服务:把上面细粒度的根底服务再进一步封装、关联,组合成新的服务,供下层调用。这一层能够实现多变的需要。
下面的这种划分是依据逻辑来划分,各个公司能够依据本人理论的业务需要来进行划分。
- 4. 撑持服务层
微服务可能胜利施行落地,这一层与下一层 CI/CD 的配套设施是十分重要。微服务不是把下面的业务服务写完就完事了,在服务治理的过程中须要很多配套设置反对。
这一层包含注册服务中心,配置核心,监控报警服务,日志聚合服务,调用链监控几大服务,后盾服务波及的服务有音讯队列,定时工作,数据拜访等内容。
- 5. 平台服务层
这一层是施行业务弹性治理的要害。集群的资源调度:扩大和缩小。业务量上来时,能够弹性减少资源。
在微服务建设过程中,可能会遇到一些突发事件。比方微博明星热点事件,会导致访问量暴增,这就须要能实时减少服务资源应答这种突发状况,热点过后,又要缩小资源。
镜像治理和公布零碎配合应用能够应答呈现的这种状况。所以很多团队前面会引入 docker+k8s,容器,镜像治理,容器服务编排。此外,基于 CI/CD 的 DevOps 也是构建在这一层能力。
- 6. 基础设施层
这个是最底层的基础设施,网络,存储,硬盘,IDC 的局部。
laas 这个概念就是针对这一层。
下面的这个架构图,还能够有其余的表现形式,比方把撑持零碎服务画在 2 侧面,只有能正确表白出架构思维。
每家公司业务模型,开发人员,都不尽相同,所以架构设计也可能不同,下面的当作一种参考设计。请务必依据自家状况来设计架构,适宜本人的才是最好的。
三:参考
- 微服务 2.0 技术栈选型手册
- 唯品会微服务架构演进