• 微服务架构学习与思考(03):微服务总体架构图解


    前面微服务2篇文章:

    如何进行服务分层

    分层:是一种很常见的架构方法。比如我们常见的网络协议TCP/IP的分层。分层之后,各层各司其职,相互隔离开来。

    最简单的服务分层

    服务分层

    第一层:接入层
    外部设备访问的统一接入层。

    第二层:聚合服务层
    对下层的基础服务做一些聚合,剪裁的工作,适配上层不同设备的数据输出。

    第三层:基础服务层
    比较细粒度的微服务层,提供基础的核心服务,公共服务。

    有了下面的基础服务层,还有上面的聚合层干什么呢?

    比如:有时候PC端和APP端的数据显示不一样,手机屏幕比较小,可能显示的数据少些,而PC端显示的数据多些,这样就需要对不同的接入层设备的数据做一些裁剪的工作。

    比如:下面的基础服务层,分的服务粒度可能比较细,接入层APP需要一个功能时,有时需要访问几个基础服务,之后APP在聚合这些服务数据,这样效率就很差,不如我们在服务端直接聚合服务,然后把聚合好的数据直接发给APP,这样访问效率就可以提升,从而提升用户体验。

    上面只是一个最基本的服务分层,可以在这个基本分层结构之上进行扩展。

    微服务总体架构图

    学习杨波老师的《微服务架构》里面的一张图,稍微做了一些修改:

    微服务总体架构图

    上面的总体技术架构图一共分了6层

    • 接入层
      也可以叫负载均衡层,把外部的流量引入到系统中来。一般负载均衡软件有nginx,lvs,还有各大云服务厂商自己的负载均衡服务。

    • 网关层
      内部接口的一些认证、安全、鉴权、过滤、限流等服务,一般处于这一层。这一层把内部的服务接口做一层安全隔离,保护内部服务,同时也可以实现一些其他需求,比如前面讲的鉴权、黑名单过滤等等需求。所以这一层在微服务架构中是很重要的一层。

    • 业务服务层
      基础服务和聚合服务

      • 基础服务:根据业务特点又可以分为核心基础服务、公共服务、中间层服务等。
      • 聚合服务:把下面细粒度的基础服务再进一步封装、关联,组合成新的服务,供上层调用。这一层可以实现多变的需求。
        上面的这种划分是根据逻辑来划分,各个公司可以根据自己实际的业务需求来进行划分。
    • 支撑服务层
      微服务能够成功实施落地,这一层与下一层CI/CD的配套设施是非常重要。微服务不是把上面的业务服务写完就完事了,在服务治理的过程中需要很多配套设置支持。
      这一层包括注册服务中心,配置中心,监控报警服务,日志聚合服务,调用链监控几大服务,后台服务涉及的服务有消息队列,定时任务,数据访问等内容。

    • 平台服务层
      这一层是实施业务弹性治理的关键。集群的资源调度:扩展和减少。业务量上来时,可以弹性增加资源。
      在微服务建设过程中,可能会遇到一些突发事件。比如微博明星热点事件,会导致访问量暴增,这就需要能实时增加服务资源应对这种突发情况,热点过后,又要减少资源。
      镜像管理和发布系统配合使用可以应对出现的这种情况。所以很多团队后面会引入docker+k8s,容器,镜像管理,容器服务编排。此外,基于CI/CD的DevOps也是构建在这一层能力。

    • 基础设施层
      这个是最底层的基础设施,网络,存储,硬盘,IDC的部分。
      laas 这个概念就是针对这一层。

    上面的这个架构图,还可以有其他的表现形式,比如把支撑系统服务画在2侧面,只要能正确表达出架构思想。

    每家公司业务模型,开发人员,都不尽相同,所以架构设计也可能不同,上面的当作一种参考设计。请务必根据自家情况来设计架构,适合自己的才是最好的。

    参考

  • 相关阅读:
    centOS7 mini配置linux服务器(三) 配置防火墙以及IPtables切换
    Linux的常用基本命令。
    centOS7 mini配置linux服务器(二) 配置IP
    分享Git的一些个人配置
    Firefox中Vimperator插件配置
    Linux下修改键盘默认布局
    Git对于单个文件的分批提交方式的使用
    Linux安装Monaco字体
    浮点与整形在GUI下的相关思考
    2D简单图形相关算法罗列
  • 原文地址:https://www.cnblogs.com/jiujuan/p/13295147.html
Copyright © 2020-2023  润新知