微服务架构筑基
软件架构演进
软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程.
什么是微服务?? Spring Cloud Netfilx Spring Cloud Alibaba service Mesh
架构的发展:基于某一种因素 技术是服务于业务的 业务又是驱动技术发展的重要因素之一
1.单体架构
www.msb.com 198.168.xx.xx OA CRM 有瓶颈
特点:
1、所有的功能集成在一个项目工程中。
2、所有的功能打一个war包部署到服务器。
3、应用与数据库分开部署。
4、通过部署应用集群和数据库集群来提高系统的性能。
优点:
1、项目架构简单,前期开发成本低,周期短,小型项目的首选。
缺点:
1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。
3、技术栈受限。
2.集群架构 流量
特点:
在单体架构的基础上进行了水平扩容
3.垂直架构 解耦
特点:
1、以单体结构规模的项目为单位进行垂直划分项目即将一个大项目拆分成一个一个单体结构项目。
2、项目与项目之间的存在数据冗余,耦合性较大,比如上图中三个项目都存在客户信息。
3、项目之间的接口多为数据同步功能,如:数据库之间的数据库,通过网络接口进行数据库同步。
优点:
1、项目架构简单,前期开发成本低,周期短,小型项目的首选。
2、通过垂直拆分,原来的单体项目不至于无限扩大。
3、不同的项目可采用不同的技术。异构架构
缺点:
1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。
3、信息孤岛问题
4、复用性问题
4.SOA架构 面向服务架构 重复性 信息孤岛 需要解耦
特点:
1、基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式给各个系统提供服务。
2、各各项目(系统)与服务之间采用webservice、rpc等方式进行通信。
3、ESB企业服务总线作为项目与服务之间通信的桥梁。解决信息孤岛
优点:
1、将重复的功能抽取为服务,提高开发效率,提高系统的可重用性、可维护性。
2、可以针对不同服务的特点制定集群及优化方案。
3、采用ESB减少系统中的接口耦合。
缺点:
1、系统与服务的界限模糊,不利于开发及维护。
2、虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。
3、抽取的服务的粒度过大,系统与服务之间耦合性高。
5.微服务架构 解耦 拓展性
特点:
1、将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务。
2、微服务遵循单一原则。
3、微服务之间采用RESTful等轻量协议传输。
4、解耦
优点:
1、服务拆分粒度更细,有利于资源重复利用,提高开发效率。
2、可以更加精准的制定每个服务的优化方案,提高系统可维护性。
3、微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更轻量。
4、适用于互联网时代,产品迭代周期更短。
缺点:
1、微服务过多,服务治理成本高,不利于系统维护。
2、分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大。
业务 划分的
架构 分久必合 合久必分 分分合合
账号服务 VIP 装备系统 背包
架构 挑战性 技术要求变高
业务架构:业务理解 业务领域的建模 业务边界的划分 不值钱的
技术架构:微服务 一致性 可用性 缓存 并行 并发 海量数据的处理 JSF motan
微服务架构 Spring Cloud 22年 15年 16年年初 Spring Cloud Netfilx Service Mesh
K8S Docker Spring Cloud 是基于Spring Boot的微服务解决方案
微服务架构 解决什么问题
微服务解决方案之SpringCloud
构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。
我所理解的 Spring Cloud
就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如 服务发现注册 、配置中心 、消息总线 、负载均衡 、断路器 、数据监控 等操作,而 Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。
服务通信
作用:解决服务间通信
1.远程调用过程(Remote procedure Call),也叫做RPC
2.基于Rest风格的Http
RPC与HTTP的区别
应用网关
作用:api网关,路由,负载均衡等多种作用
什么是有状态的服务呢?
两个来自相同发起者的请求在服务器端是否具备上下文关系
注册中心
作用:解决服务治理问题(服务发现,服务续约,服务下线,动态感知等)
负载均衡
作用:,主要提供客户侧的软件负载均衡算法。
配置中心
作用:解决配置一致化问题以及统一管理
链路追踪
作用:优化系统瓶颈以及生成网络拓扑
日志监控
作用:日志数据分析可视化
断路器
作用:断路器,保护系统,控制故障范围。