微服务 Spring Cloud 5,一图说透Spring Cloud微服务架构

一、域名系统DNS
在微服务中,域名系统DNS的作用主要是进行服务发现和负载均衡。

每个微服务实例在启动时,将自己的IP地址和端口号等信息注册到DNS服务器,浏览器通过查询DNS服务器,获取可用的服务实例的网络位置信息,从而实现服务的自动发现和动态更新。
DNS服务器可以根据一定的策略,比如轮询、随机等,将请求分发到不同的负载均衡器LVS上,提高系统的并发处理能力和容错性。
二、LVS(Linux Virtual Server),Linux虚拟服务器
LVS是一个开源的负载均衡软件,基于Linux操作系统实现。它在Linux内核中实现负载均衡的功能,通过运行在用户空间的用户进程实现负载均衡的策略。

LVS支持多种负载均衡算法,例如轮询、随机、加权轮询、加权随机等。
LVS支持多种网络协议,例如TCP、HTTP、HTTPS,可以满足不同应用的需求。
LVS具有高可用和可扩展性。它支持主从备份和冗余配置,当主服务器出现故障时,备份服务器可以自动接管负载,确保服务的连续性。此外,LVS还支持动态添加和删除服务器节点,方便管理员进行扩容和缩容的操作。
三、CDN静态资源
CDN静态资源图片、视频、JavaScript文件、CSS文件、静态HTML文件等。这些静态资源的特点是读请求量极大,对访问速度的要求很高,并占据了很高的宽带。如果处理不当,可能导致访问速度慢,宽带被占满,进而影响动态请求的处理。
CDN的作用是将这些静态资源分发到多个地理位置的机房的服务器上。让用户就近选择访问,提高访问速度,解决跨地域请求速度慢的问题
四、Nginx反向代理服务器
1、Nginx的主要作用体现在以下几个方面:
反向代理,Nginx可以作为反向代理服务器,接收来自客户端的请求,然后将请求转发到后端的微服务实例。
负载均衡,Nginx可以根据配置,将请求分发到微服务不同的实例上,实现负载均衡。
服务路由,Nginx可以根据不同的路径规则,将请求路由到不同的微服务上。
静态资源服务,Nginx可以提供静态资源服务,如图片、视频、JavaScript文件、CSS文件、HTML静态文件等,减轻后端服务的压力,提高系统的响应速度和性能。
、Nginx静态资源服务和CDN静态资源服务,如何选择?
在选择Nginx静态资源服务和CDN静态资源服务时,可以根据以下几个因素进行权衡和选择:

性能和速度:CDN静态资源服务通常具有更广泛的分布式节点和缓存机制,可以更快地响应用户的请求,并减少传输距离和网络拥塞。如果静态资源的加载速度和性能是首要考虑因素,CDN可能是更好的选择。
控制和自定义能力:Nginx静态资源服务提供更高的灵活性和控制能力,可以根据具体需求进行定制和配置。如果需要更精细的控制和自定义能力,或者在特定的网络环境下进行部署,Nginx可能更适合。
成本和预算:CDN静态资源服务通常需要支付额外的费用,而Nginx静态资源服务可以自行搭建和部署,成本相对较低。在考虑选择时,需要综合考虑成本和预算的因素。
内容分发和全球覆盖:如果静态资源需要分发到全球各地的用户,CDN静态资源服务的分布式节点可以更好地满足这个需求,提供更广泛的内容分发和全球覆盖。
五、Gateway网关
在微服务架构中,Gateway的作用如下:

统一入口:Gateway作为整个微服务架构的统一入口,所有的请求都会经过Gateway,这样做可以隐藏内部微服务的细节,降低后台服务受攻击的概率;
路由和转发:Gateway根据请求的路径、参数等信息,将请求路由到相应的微服务实例。这样可以让服务解耦,让各个微服务可以独立的开发、测试、部署;
安全和认证:Gateway通常集成了身份验证和权限验证的功能,确保只有经过验证的请求才能访问微服务。Gateway还具备防爬虫、限流、熔断的功能;
协议转换:由于微服务架构中可以使用不同的技术和协议,Gateway可以作为协议转换中心,实现不同协议之间的转换和兼容性;
日志和监控,Gateway可以记录所有的请求和响应日志,为后续的故障排查、性能分析、安全审计提供数据支持。Gateway还集成了监控和报警功能:实时反馈系统的运行状态;
服务聚合:在某些场景中,Gateway可以将来自多个微服务的数据进行聚合,然后一次性返回给客户端,减少客户端和微服务之间的交互次数,提高系统性能;
六、注册中心Nacos
在微服务架构中,Nacos的作用主要体现在注册中心、配置中心、服务健康检查等方面。

注册中心:Nacos支持基于DNS和RPC的服务发现,微服务可以将接口服务注册到Nacos中,客户端通过nacos查找和调用这些服务实例
配置中心:Nacos提供了动态配置服务,可以动态的修改配置中心中的配置项,不需要重启后台服务,即可完成配置的修改和发布,提高了系统的灵活性和可维护性。
服务健康检查:Nacos提供了一系列的服务治理功能,比如服务健康检查、负载均衡、容错处理等。服务健康检查可以阻止向不健康的主机或服务实例发送请求,保证了服务的稳定性和可靠性。负载均衡可以根据一定的策略,将请求分发到不同的服务实例中,提高系统的并发处理能力和性能。
七、Redis缓存
1、在微服务架构中,Redis的作用主要体现在以下几个方面:
缓存服务:Redis可以作为高速缓存服务器,将常用的数据存储在内存中,提高数据访问速度和响应时间,减轻数据库的访问压力,并加速后台数据的查询;
会话管理:Redis可以存储会话信息,并实现分布式会话管理。这使会话信息可以在多个服务之间共享和访问,提供一致的用户体验;
分布式锁:Redis提供了分布式锁机制,可以确保微服务中多个节点对共享资源的访问的合理性和有序性,避免竞态条件和资源冲突;
消息队列:Redis支持发布订阅模式和消息队列模式,可以作为消息中间件使用。微服务之间可以通过Redis实现异步通信,实现解耦和高可用性;
3、Redis会话管理如何实现?
Redis会话管理的一般实现步骤:
会话创建:当用户首次访问应用时,可以在Redis中创建一个新的会话,会话可以是一个具有唯一标识符的数据结构,例如哈希表或字符串;
会话信息存储:将会话信息关联到会话ID存储到Redis中,会话信息可以包括用户身份、登录状态、权限等。
会话过期时间设置:为会话设置过期时间,以确保会话在一定时间后自动失效。Redis提供了设置键值对过期时间的机制,可以通过EXPIRE命令为会话设置过期时间;
会话访问和更新:在每次用户访问应用时,通过会话ID获取相应的会话信息,并对其进行验证和更新。如果会话已过期,可以要求用户重新登录;
会话销毁:当用户主动退出或会话到期后,需要销毁会话,通过删除Redis中存储的会话信息即可
在 Spring Cloud 中,负载均衡是通过 Ribbon 这个负载均衡器来实现的。而 Spring Cloud Nacos 使用了 Ribbon 作为默认的负载均衡实现,并且利用 Nacos 注册中心自动刷新服务列表的特性,实现了动态的负载均衡。
Round Robin 轮询:(默认策略)按照顺序依次选择可用实例进行调用,实现请求的均匀分配。
Random 随机:随机选择一个可用实例进行调用。
Weighted Random 带权重随机:根据实例的权重随机选择一个可用实例进行调用,权重高的实例被选中的概率较大。
Weighted Response Time 带权重响应时间:根据实例的权重和响应时间选择一个可用实例进行调用,权重高且响应时间低的实例被选中的概率较大。
Best Available 最可用:选择最健康(可用性最高)的实例进行调用。
Availability Filter 最高可用策略:排除掉不可用的实例,选择最高可用的实例进行调用。
健康检查与自动容错:Nacos会对服务实例进行健康检查,确保服务实例的可用性。当某个服务实例出现故障或性能下降时,Nacos会自动将其从服务列表中移除,避免将请求分发到不健康的服务实例上。同时,Nacos还支持自动容错功能,可以在某个服务实例不可用时,自动切换到其他可用的服务实例上,确保服务的连续性。

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值