微服务的好处
近年,Spring Cloud俨然已经成为微服务开发的主流技术栈.想了解的自行谷歌吧.
spring cloud技术的选型
在项目的初期我在spring cloud的组件选择上面考虑了好久.将近浪费了我一个月的时间.不过终于我都想通了.我就说说我的技术选型跟为什么要选用它的理由.纯属菜鸟的理解.
- 配置中心 spring cloud Nacos
- 注册中心 spring cloud Nacos
- 微服务网关 spring cloud gateway
- 分库分表 shardingsphere
- mq 这个就不用说了吧
还有啥来没想到感觉这些就够了先说说这些
微服务的配置中心
配置中心当时我就知道有两种spring cloud config 跟 spring cloud Nacos 准确的说应该是 spring cloud Alibaba Nacos.
spring cloud config 都知道基于git 配置文件放到git上托管 不支持动态加载配置(也可以支持不过需要改动)
spring cloud Alibaba Nacos 代码是放到数据库的支持动态加载配置文件 这个很好用 如果使用spring cloud gateway做网关的话这个就很必要了.网关服务不适合频繁重启.
最后我决定选择使用nacos同时也是因为它也支持注册中心
微服务注册中心
spring cloud 注册中心 有很多种 比如 zookeeper Eureka 等
最佳实践肯定是zookeeper了.
我个人比较喜欢使用spring官网推荐的组件毕竟集成度高.而且如果spring推荐的话肯定是经过考验的.最开始我是想用Eureka的但是Eureka 2.x不维护了.这个就让人很蛋疼. 最后就选择了 Nacos 也是应为使用Nacos的配置中心
微服务网关
最开始的时候我是选择 基于 nginx lua 作为微服务的网关.我们公司也在用.而且使用lua也可以实现熔断跟限流配置自动更新.完全可以代替spring cloud gateway 并且性能也可以得到保障 .不过我又想了想 spring cloud gateway更简单 个人认为nginx+lua更适合大场景.如果做微服务小集群的话 spring cloud gateway更适合.
分库分表
分库分表这个问题让我头疼了一个星期.该怎么选自己实现jpa加入分库分表的功能 使用中间件 mycat 还是shardingJDBC.换来换去最后选了shardingJDBC
因为shardingJDBC支持编排治理配合Nacos动态加载很合适. 后面章节会提shardingJDBC的编排治理的强大之处 跟shardingJDBC的坑