基于SpringCloudAlibaba的公用服务云平台设计(一)
从公司即将离职之际,想要写一篇文章,分享一下近一年从零开始搭建一整套的基于SpringCloudAlibaba的公共云服务平台的经验,也算是留念一下自己一年多的成长和经历
走上微服务道路的原由
从20年初开始负责搭建和设计公司内部的公共服务云平台,主要用于为公司所有产品线提供第三方对接服务、较复杂的业务服务、定时调度等公共服务。
从20年初至今,只有楼主一人,从零开始搭建设计整套平台,最开始的时候由于没有接触过服务的概念,便直接用SpringBoot项目分割网关、各服务,通过httpClient调用转发调用请求的方式做了一版。但是仅仅半年之后一大堆坑就来了
- 认证特别麻烦无法统一,特别是针对页面服务和接口服务两种请求方式的认证更难统一
- 服务间调用复杂且繁琐
- 没有服务发现,子服务只能通过域名相互访问,扩展性极差
- 出错时调试极其麻烦
- 性能差,使用tomcat项目用httpClient调用且通过域名调用
- 等等等
所以,服务改造迫在眉睫
技术选型
由于SpringCloudNetflix一些核心部件停止迭代,且正好SpringCloudAlibaba已经发布了多个稳定版本,且它的核心组件都是java技术栈,有利于排错和之后自行定制,所以决定使用SpringCloudAlibaba(然而在整个搭建过程中依然存在大量的坑,一个坑卡一天都不止,而且基本没有相关的文档,只能看官文+自己debug),最终技术选型为
核心版本依赖
依赖 | 版本 |
---|---|
SpringCloud | Hoxton.SR9 |
SpringCloudAlibaba | 2.2.4.RELEASE |
SpringBoot | 2.3.8RELEASE |
版本是踏过多次坑之后总结的,比较稳定且新的组合,最近这几个依赖又有更新,但是不保证使用新版本会不会出现什么神奇的问题
主要使用组件
- spring-cloud-nacos-discovery
- spring-cloud-gateway
- spring-security
- spring-cloud-openfeign
- spring-cloud-sleuth & zipkin
- spring-cloud-sentinel & circuitbreaker
- spring-cloud-stream & rocketmq
架构图
其他
今天开个头,之后会在离职前的空闲时间里持续更新,给大家讲一下
- 整体设计与设计思路
- 中间件部署与使用方法
- 所有组件使用方式
- 所有组件我做的自定义扩展和修改等等
这一年设计和实施SpringCloudAlibaba遇到无数的坑,而且没有找到多少有用的博客能够提供帮助,希望我这个系列的文章可以写完可以给跟我之前一样处境的人一些帮助