背景
软件架构的发展经历了从单体架构、垂直架构、SOA架构到微服务架构的过程
1. 演变软件架构
1.1 单体架构
特点:
1、在一个项目中集成所有功能
2、所有功能都打包成war包,部署在服务器上
3、应用程序与数据库分开
4、通过部署应用集群和数据库集群来提高系统的性能
优点:
1、项目简单,前期开发成本低,周期短,小项目首选
缺点:
1、所有功能都集成在一个项目中,不容易开发、扩展和维护大型项目
2、系统性能的扩展只能扩展集群节点,成本高,瓶颈高
3、技术栈有限(一个项目只能开发一个技术栈)
1.2 垂直架构特点:
1、以单体结构规模项目为单位的垂直划分项目,将大型项目分为单体结构
2、项目之间存在数据冗余和耦合。例如,上图中的三个项目都有客户信息
3、项目之间的接口大多是数据同步,如数据库之间的数据同步,数据库之间的数据同步通过网络接口进行
优点:
1、项目结构简单,前期开发成本低,周期短,是小型项目的首选
2、通过垂直拆分,原有的单体结构不会无限扩展
3、不同的项目可以使用不同的技术
缺点:
1、所有功能都集成在一个项目中,不容易开发大型项目
2、扩展系统性能只能通过扩展集群节点,成本高,存在瓶颈
1.3 SOA架构特点:
1、基于SOA的架构理念,将重复的公共功能提取为组件,并以服务的形式为每个系统提供服务。
2、通过webservice、rpc等方式,在每个项目(系统)和服务之间进行通信
3、ESB企业服务总线是项目与服务之间通信的桥梁
优点:
1、提取重复功能,提高开发效率,提高系统的可重用性和可维护性
2、可根据不同服务的特点定制集群和优化方案
3、ESB减少了系统的耦合
缺点:
1、系统与服务之间的界限模糊,不使用开发和维护
2、虽然使用ESB,但服务界面协议不固定(http,webservice,tcp),种类繁多,不利于维护
3、提取服务粒度大,系统与服务耦合度高
1.4 微服务架构
4.1 Spring Cloud Eureka
Spring Cloud Eurake 是Netflix公司Eurake的二次封装,实现了服务治理的功能,Spring Cloud Eurake提供服务端和客户端,服务端是服务注册中心,客户端完成服务注册和发现。Java语言用于服务端和客户端(Eurake支持多语言)。如下图所示,Eurakee Server 与Eurake Client关系:
4.2 架构
A:提供服务的一方,需要在服务管理中心注册自己,心跳是为了保证服务的生存
B:消费者服务方首先从服务治理中心找到所需的服务,然后使用RESTful进行调用
HA:确保服务治理中心的高可用性
4.3 实战
4.3.1 开发和部署Eureka Server
1、创建SpringBoot项目
2、将依赖添加到POM文件中,(SpringBoot ,Spring Cloud , Eureka Server)
3、application配置.yml
4、部署两个Eureka Server,并相互注册,实现高可用性