这是我参与 8 月更文挑战的第 8 天,活动详情查看: 8月更文挑战
这段时间公司的架构应业务场景需要使用到分布式架构,因此去学习了SpringCloud 今天主要是对springcloud的一些基本理论概念做一个梳理
基本概念:
SpringCloud他有这一系列的组件来支撑这他(一下是基于初代SpringCloud所适用的架构技术,后期文章内会推出一下架构的升级以及替换),每个策略下我各举一个,其中包含:
| 服务注册中心 | 服务调用 | 服务降级 | 服务网关 | 服务配置 | 服务总线 |
|---|---|---|---|---|---|
| Eureka | Ribbon | Hystrix | Zuul | Spring Cloud Config | Spring Cloud Bus |
各技术作用点
服务注册中心:
官方:云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
个人总结:是一个(注册中心)对所有服务统一化管理的组件,他还有监控和配置故障时的应对策略。
服务调用:
官方:提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。
个人总结:他可以实现多个服务之间的负载均衡(相同服务的集群),在使用当中我们还可以定制他的负载规则,如:(默认的)轮询策略,资源占用情况,服务的优先级等或者我们自定义的负载策略,并非默认就是最好的,具体情况要更具我们的业务而定。
服务降级:
官方:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
个人总结:就是我们在服务启动后可能回因为软件,硬件问题而导致服务无法正常访问,因此此架构给的针对性策略,如降低、提供第一级别的服务访问等等。
服务网关:
官方:在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。
个人总结:网关是用于拦截和分发的作用,如:将入网的API转发到所对应服务的API中。如图:
服务配置:
官方:配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
个人总结:就是将我们的配置以及工具包等,放在远程的服务器上,如:我们的application.yml文件中的一些基本配置,去一个服务器上去读取。优点:这样的话可以确保配置可以统一化管理,在某些程度上极大的方面维护人员的维护。安全性也有一定的提升。
服务总线:
官方:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
个人总结:就如我上上节所讲的JAVAWEB事件,再次可以监听服务的事件,对其他服务器在下发等处理,也可以实现消息总线(在配置的时候将个总线服务看做一个起点,其他接入的服务串联起来形成一条线),总线可以吧自己需要的消息下发给所有的服务。
- 在以上的组件中,还有一些小的组件或工具诞生,如:分布式事务锁,雪花算法等,我会在后续的推文中一次给大家展示。
总结:
看了SpringCloud后,我对比了公司的一些以前的项目,在业务足够庞大的时候我们可以适当的对服务的架构做出调整以及升级,在不断的了解SpringCloud,SpringCloudAlibaba后我发现这些分布式技术在技术行业是一个极大的变革,在工作当中我们可能只会关心到自身所要去实现的那块业务,而忽视了架构的一个整体,我在连调的时候发现如:消费者和生产者,如生产者中格式不对或者写的不够友好,其实极大程度上对消费者会带来很大的不便,所以我们应在日常的开发中多思考多总结进而不断提高我们的代码质量^_^。