一、java开发趋向
单体应用:SpringBoot
微服务项目:SpringCloud技术栈(分布式微服务架构的一站式解决方案,是多种微服务架构落地的集合体)
二、微服务&分布式&集群概述
微服务
拒绝大型单体应用,基于业务边界进行服务微化,各个服务独立部署运行
分布式&集群
集群:是个物理形态,指的事将几台服务器集中在一起实现同一业务
分布式:是个工作方式,建立在网络之上的软件系统
案例:京东是一个分布式系统,众多业务运行在不同的机器,所有业务构成一个大型的业务集群,每个小型的业务,比如用户系统,访问压力大的时候一台服务器不够,就将用户系统部署在多个服务器,将每一个业务系统集群化
总结:分布式中的每一个节点都可叫做集群,而集群不一定是分布式
三、分布式微服务技术概述
2.1 对于一个大型分布式微服务架构需要解决的大概问题
- 服务注册与发现
- 服务调用:在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的相互调用,我们成为远程调用;springcloud中使用HTTP+JSON的方式完成远程调用
- 服务熔断
- 负责均衡
- 服务降级
- 服务消息队列
- 配置中心管理
- 服务网关
- 服务监控
- 全链路追踪技术
- 自动化部署技术
- 定时任务调度操作
2.2 大型微服务架构案例
2.3 微服务架构流程
2.4 技术版本选型
4.1、Spring boot版本更新是以数组为版本号如Spring boot 2.x.x;而Spring Cloud是以字母为版本号如Spring Cloud Hoxton
4.2 、使用Spring boot开发单体项目自己选择适当版本即可,但是对于分布式微服务项目,整体是基于Spring Cloud建设的,所以要根据Spring Cloud来选择Spring boot版本,Springboot和cloud版本依赖关系在官网就可以看到Spring | Home
更加详细的技术选型版本介绍地址https://start.spring.io/actuator/info
2.5 Spring Cloud相关技术停更及替换
技术 | (快)停更/不维护 | 替代技术 | 备注 |
服务注册中心 | Eureka | Zookeeper、Consul、Nacos | 推荐使用Nacos(特别是百万级项目) |
服务调用 | feign(闭源) | OpenFeign已替换Feign | |
负载均衡 | Ribbon(快要停更)、 | LoadBalancer替换Ribbon、 | |
服务降级 | Hystrix(官网停更不推荐使用 但是国内使用多) | resilience4j(国外推荐使用) 、sentinel(阿里) | 推荐sentinel |
服务网关 | Zuul | gateway | |
服务配置 | config | Nacos(阿里巴巴 )、apollo | 推荐Nacos |
服务总线 | bus | Nacos(阿里巴巴 )、apollo | 推荐Nacos |