微服务架构学习与思考(03):微服务总体架构图解
微服务架构学习系列文章:
- 微服务架构学习与思考(01):什么是微服务?微服务的优势和劣势
- 微服务架构学习与思考(02):微服务实施的前提条件?有哪些问题需要思考?
- 微服务架构学习与思考(03):微服务总体架构图解
一:进行服务分层
分层:是一种很常见的架构方法。比如我们常见的网络协议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技术栈选型手册
- 唯品会微服务架构演进
微服务架构学习与思考(03):微服务总体架构图解相关推荐
- 微服务架构学习与思考(05):微服务架构适用场景分析
一.简述 在实际开发中,需要考虑多种因素,来决定采取哪种架构模式才适合当前业务发展情况. 毕竟微服务也不能"包治百病",不要把它当做万能药.企业研发哪里得病了,觉得只要把" ...
- 微服务架构学习 之 什么是微服务
很长一段时间了,迷恋于Spring技术应用,执迷和执着促使我坚持不懈地带领着公司研发团队,在这条技术道路上摸爬滚打着前行,即使我心中明白,我们是一个非纯粹的IT企业,但IT新颖技术的诱惑,让我们不断紧 ...
- 【论文写作】如何写引言?应该思考什么问题?总体架构!!!
结构 大多数的科技论文都聚焦于简单地说明,做了什么,发现了什么?虽然这个可以帮助你写出一篇研究型论文当中的核心的东西(方法论和结果),但是不能完全把引言的部分完成.在这篇文章当中,将展示研究型论文当中 ...
- Java微服务学习笔记(一):微服务架构的概念理解
Java微服务学习笔记 Tips:入门学习时粗略整理,仅供参考 (一):架构的基础理解 文章目录 Java微服务学习笔记 前言 一.微服务是什么? 二.常用开源微服务框架演化 1. Dubbo 2. ...
- DDD微服务架构设计第四课 微服务落地实践的技术中台
10 微服务落地的技术实践 如今,做一个优秀的程序员越来越难.激烈的市场竞争.互联网快速的迭代.软件系统规模化发展,无疑都大大增加了软件设计的难度.因此,对于架构师的能力要求也越来越高,就像我的一本书 ...
- 腾讯组织架构整改引思考:中小团队要怎样搭建架构?
原文网址:https://www.infoq.cn/article/UoWc9uUtVIrm-azWOglu 2019 年 1 月 4 日,腾讯宣布成立技术委员会,也代表之前宣布的架构调整终于拉开序幕 ...
- 基于Spring Boot和Spring Cloud实现微服务架构学习--转
原文地址:http://blog.csdn.net/enweitech/article/details/52582918 看了几周spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习 ...
- 基于Spring Boot和Spring Cloud实现微服务架构学习
目录 Spring 顶级框架 Spring cloud子项目 WHAT - 什么是微服务 微服务简介 微服务的具体特征 SOA vs Microservice HOW - 怎么具体实践微服务 客户端如 ...
- SpringCloud微服务架构学习
SpringCloud 1. 微服务架构理论入门 1.1. 微服务架构概述 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.每个服务运 ...
- javaweb k8s_K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程...
K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程 课程内容是关于Kubernetes微服务架构学习课程,基于K8S开展ASP.NET核心进行微 ...
最新文章
- Inna and Binary Logic
- 【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵
- 简单一致的Log4j2 Logger命名
- Javascript构造函数的继承
- php流程控制的类型有哪些,流程控制包括哪些内容
- JAVA中判断一个字符串是否包含另一个字符串
- asp.net下载文件的常用方法大全
- 375 Inscribed Circles and Isosceles Triangles 等腰三角形 内接圆 圆周率PI表示
- 狼群ps-天空大师扩展插件_扩展OctoberCMS-构建软删除插件
- 手机内置摄像头接线图解_1000以下手机哪款好?8款千元以内性价比最高的手机推荐...
- JS 判断字符串是否为空
- 【宋红康 MySQL数据库 】【高级篇】【10】索引的创建与删除_MySQL8.0的索引新特性
- SSRS----Report Builder 同时冻结首行和前两列的一种方法
- c++系列:关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、Msvcp100D.dll 故障查及解决方法
- 自然人独资企业要上缴哪些税
- 小程序入门第二课 — 组件与WXML语法
- php crc16计算,如何在PHP HEX中计算CRC16 CCITT?
- 【实例】PHP如何实现汉字转为拼音的?
- 如何设置HTML背景特效,HTML5之按钮背景不同动画特效设计
- 西门子S7-1200系列PLC定时器指令