一、界说
微服务,又叫微服务架构,也就是分布式架构,是软件架构的一种方式。它将一个大的单体架构应用拆分成一系列按业务范畴分别模块的、小的自治服务。
如开辟部有许多使命,如果把使命给了一个组的话,效率肯定会低落。于是就把差别使命交给差别的小组,如A组,B组,前端,ui,每个组是独立工作的,有题目也是可以自理的,小组之间也是互相配合的,他们的总体目标是项目正常运行。在这种情况下:
每个组就相当于一个“微服务”。
Spring Cloud 就像一个“开辟部司理”,它要帮助开辟部来管理小组之间的沟通、协作,确保每个小组都能高效完成使命。
二、Spring Cloud/Spring Cloud Alibaba微服的根本构成
功能:让微服务能够动态的找到彼此,告诉每个小组,“在哪里?”“能做什么?”
详细作用:当多个微服务摆设在差别的服务器上时,如何知道某个服务的地点?Spring Cloud 提供了服务注册中心(如 Eureka、Consul),每个服务启动后会向注册中心注册自己的信息(IP 地点、端标语等)。其他服务可以通过注册中心查询到目标服务的地点,从而实现通讯。
应用场景:动态环境中,服务实例大概频繁上下线。
阿里云:提供了 Nacos,它是一个更符合国内开辟者习惯的服务注册与配置中心工具。Nacos 不光支持服务注册与发现,还支持动态配置管理,得当复杂的分布式体系。
功能:当某个服务有多个实例时,合理分配请求流量。
详细作用:如果一个服务中 有 3 个实例运行,Spring Cloud 的负载均衡器(如 Ribbon 或 LoadBalancer)会主动选择一个实例来处置惩罚请求。避免某些实例过载,提拔体系的整体性能。
应用场景:高并发场景下,需要分担流量。服务实例数量动态变化时,确保请求分配均匀。
阿里云:提供了 SLB(Server LoadBalancer) 和 Spring Cloud
LoadBalancer 的集成支持。
- ①SLB:阿里云提供的服务器负载均衡服务,支持四层和七层流量分发,实用于大规模分布式体系。
- ②Spring Cloud LoadBalancer:作为 Ribbon 的替代方案,支持动态调整权重和服务实例的选择计谋。
功能:防止级联故障,提拔体系的容错能力。
详细作用:如果某个微服务出现故障或响应超时,断路器会阻止请求继续传递,并返回一个默认值或错误信息。防止某个服务的题目扩散到整个体系。
应用场景:体系中存在依赖关系的服务,某个服务故障大概导致其他服务不可用。需要保护体系稳定性。
阿里云:提供了 Sentinel,它是阿里巴巴开源的高可用防护工具。支持:
①流量控制:支持基于 QPS、线程数等多种维度的限流计谋。
②熔断降级:当服务出现异常或响应超时时,主动熔断并返回降级逻辑。
③实时监控:提供可视化的监控面板,帮助开辟者实时了解体系的运行状态。
- API网关 Spring Cloud Gateway
功能:作为体系的同一入口,负责路由、过滤、安全校验等功能。
详细作用:客户端只需要访问网关(如 Zuul 或 Spring Cloud Gateway),网关会根据规则将请求转发到对应的服务。提供同一的安全校验、限流、日记记载等功能。不外Spring Cloud Gateway替代 Zuul,功能更强盛,性能更高。
应用场景:对外提供 API 接口的体系。需要集中管理请求流量和安全性。阿里云:提供了 Alibaba Cloud API Gateway 和 Spring Cloud Alibaba Gateway 的支持。阿里云的企业级 API 网关服务,支持:
①路由规则界说:根据请求路径、参数等条件将流量转发到差别的后端服务。
②安全校验:支持 OAuth2、JWT 等认证机制,确保只有合法用户才气访问。
③流量控制:支持限流、黑白名单等功能,保护后端服务免受恶意攻击。
- Spring Cloud Alibaba Gateway:基于 Spring Cloud Gateway 的加强版本,集成了更多阿里云生态的功能。
功能:集中化管理所有微服务的配置文件。
详细作用:所有微服务的配置文件(如数据库毗连信息、日记级别等)可以存储在一个地方(如 Git 或 SVN)。Spring Cloud Config 会将这些配置推送到各个服务,支持动态革新。
应用场景:配置需要频繁调整的体系。多个服务共享相同配置的场景。
阿里云:提供了 Nacos 和 ACM(Application Configuration Management)。
Nacos:支持动态配置管理,允许开辟者通过 Web 界面或 API 修改配置,并实时推送到所有服务实例。
ACM:阿里云提供的配置管理服务,支持:
①配置版本管理:记载配置的历史变动,便于回滚和审计。
②多环境隔离:支持开辟、测试、生产等环境的独立配置。
③灰度发布:支持渐渐推送配置变动,低落风险。
- 提高体系的可扩展性:每个微服务可以独立摆设和升级,不会互相之间影响,比如项目又新增了一项业务,这样就不用修改现有的项目代码了,直接新增一个服务
- 提高体系的稳定性:如果某个微服务宕机了,也不会整个体系崩溃
- 同一的管理和配置:集中化的配置管理,让你可以随时调整所有微服务的参数,而不需要逐一手动修改。
- 简化开辟和运维:提供了一整套开箱即用的工具,比如服务注册与发现、分布式追踪等,开辟者不用自己从头实现这些复杂的功能。
缺点:最明显的就是服务调用关系错综复杂,技术成本相对高,随着业务的扩展服务的增加,运维压力也会随之增大
起首要明白的是并不是把单体项目拆分成小的项目并打包独立摆设后就是Spring Cloud微服务。Spring Cloud微服务要互相之间能通讯,能协作起来,但又互不影响才算是Spring Cloud微服务架构。
比如:电商平台,包含用户管理、订单管理、付出管理,产品管理等功能
把这些功能拆分为独立的小项目,也能启动并运行,但是这些服务之间没有通讯和协作,那么它们只是孤立的“孤岛”,无法完成一个完整的业务流程,用户购买产品时需要下单,下单就需要用户信息,就需要订单管理。因此仅仅拆分是不够的,还需要让这些服务互相通讯、联动起来,才气构成一个完整的应用。
总结:通讯,自治,同一尺度的对外接口,有自己的数据源
因为我的 Spring Boot 应用是通过阿里云创建的,那么我们可以基于阿里云的生态工具来构建一个微服务架构。
1.确定需求
假设我们要开辟一个新体系,包含以下两个功能:
A.用户管理(user-service):负责用户注册、登录等利用。
B.订单管理(order-service):负责创建订单、查询订单等功能。
这两个功能将被拆分成两个独立的微服务,并通过 Spring Cloud Alibaba 实现通讯和协作。
2. 技术选型
框架:Spring Boot + Spring Cloud Alibaba
服务注册与发现:Nacos
负载均衡:SLB(LoadBalancer)
配置管理:Nacos
API 网关:Spring Cloud Gateway
创建 Nacos 服务注册与配置中心
下载并解压 Nacos。Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网
启动 Nacos:解压后进入 nacos/bin 目录打开cmd Windows: startup.cmd -m standalone
启动成功后,访问 http://localhost:8848/nacos,默认用户名和暗码为 nacos/nacos。
创建用户服务(user-service)
创建订单服务(order-service)
创建API网关(Spring Cloud Gateway)
演练项目源码(如果这里没有,可以私信我要,写的比力简单)
你们的点赞是我动力的源泉。
这个源码资源其实绑定上了,不知道为啥不能免费下载,如果有需要私信我吧。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |