这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战。
第一次参加这个活动,正好借此机会学习一下Spring Cloud / Alibaba 微服务架构。
认识Spring Cloud
Spring Cloud是基于Spring构建分布式系统的工具集。
它的发展是从Spring -> Spring Boot -> Spring Cloud。
1)Spring是以Bean为中心,提供IOC、AOP等功能。
2)Spring Boot是以Application为中心,提供自动配置、监控等功能。
3)Spring Cloud是以Service为中心,提供服务的注册与发现、微服务的调用与负载均衡等功能。
Spring Cloud虽然提供了非常强大的功能,但并不提供所有的实现,而是通过SpringCloud Common子项目定义了抽象API,然后不同厂商结合其自身的中间件提供自己的SpringCloud套件。
eg:
Netflix结合自己的Eureka、Ribbon、Hystrix等开源中间件实现了Spring Cloud Netflix。
kubernetes结合自己的apiserver、configmap等功能实现了Spring cloud kubernetes。
Alibaba结合自己的Nacos、Sentinel等开源中间件实现了Spring cloud Alibaba。
微服务架构的演变过程
1、单体架构
将整个业务功能实现写到一个工程中去。
优点:开发、部署、上线非常简单
缺点:代码耦合严重、牵一发而动全身
2、垂直应用架构
单体架构的升级改进。
1)从单体应用按不同的功能业务拆分成不同的应用
2)每个应用独立部署
3)每个应用都有独立的数据库
4)每个应用有独立的运营
优点:服务、部署独立,水平扩展容易
缺点:搭建复杂,服务之间关系错综复杂,维护困难。
3、SOA架构(面向服务架构)
垂直应用架构的升级改进,是一个系统架构的设计思想。
4、业界最流行的软件开发架构:微服务架构
入口是服务网关,可以接受任何类型客户端的访问请求。
搭建前准备工作
安装IDEA和插件
File->Settings->Plugins
推荐几个安装的插件:
1)Lombok
使用了lombok的注解后,不需要写也不需要生成get/set方法,减少了代码量,也降低了代码维护的负担。虽然可以使用IDEA的快捷键生成get、set等方法,但是如果Bean的属性有增删改时,这些方法就需要对应地进行增删改操作,不利于代码维护。
2)GsonFormatPlus
这个插件可以根据JSON 字符串自动的生成实体类。
3)Json Parser
用来在IDEA内验证和格式化JSON字符串,不用再去网页中验证。
4)REST Client plugin
可以不用在Postman中测试API,只需要编写简单的HTTP脚本就可以完成测试,并且这些脚本还具有存档的功能。
如果感兴趣可以接下来一起搭这个项目,后续会将搭好的项目上传。如果文中有写错的也请大家指出,谢谢。