大厂是如何做微服务架构的服务路由的?(上)

简介: 大厂是如何做微服务架构的服务路由的?

负载均衡算法是为了解决服务消费者如何从众多可用服务节点中选取一个最合适的节点发起调用。


但在业务中经常还会遇到这样的场景,比如服务A部署在北京、上海、广州三个数据中心,所有的服务节点按照所在的数据中心被分成了三组,那么服务A的消费者在发起调用时,该如何选择呢?


这就是服务路由。



什么是服务路由

服务消费者在发起服务调用时,必须根据特定规则选择服务节点,从而满足某些特定需求。    


应用场景

分组调用



为了保证服务高可用,实现异地多活,一个服务往往不止部署在一个数据中心,而且出于节省成本等考虑,有些业务可能不仅在私有机房部署,还会采用公有云部署,甚至采用多家公有云部署。服务节点也会按照不同的数据中心分成不同的分组,这时对于服务消费者来说,选择哪一个分组调用,就必须有相应的路由规则。



灰度发布

在服务上线发布的过程中,一般需要先在一小部分规模的服务节点上先发布服务,然后验证功能是否正常。如果正常的话就继续扩大发布范围;如果不正常的话,就需要排查问题,解决问题后继续发布。



流量切换

在业务线上运行过程中,经常会遇到一些不可抗因素导致业务故障,比如


  • 某机房光缆被挖断
  • 着火等事故


导致整个机房的服务都不可用。这时就需要按照某个指令,能够把原来调用这个机房服务的流量切换到其他正常的机房。


读写分离

大多业务来说都是读多写少,服务部署时,可以把读写分开部署,所有写接口可以部署在一起,而读接口部署在另外节点。



服务路由规则

条件路由

基于条件表达式的路由规则,以下面的条件路由为例,我来给你详细讲解下它的用法。

condition://0.0.0.0/dubbo.test.interfaces.TestService?
  category=routers&dynamic=true&priority=2&enabled=true&rule=
  " + URL.encode(" host = 10.20.153.10=> host = 10.20.153.11")

condition:// 代表这是一段用条件表达式编写的路由规则,具体的规则是

host = 10.20.153.10 => host = 10.20.153.11

=>前是服务消费者的匹配条件,后面是服务提供者的过滤条件:

当服务消费者节点满足匹配条件,就对该服务消费者执行后面的过滤规则。

这段表达式表达的意义就是IP为“10.20.153.10”的服务消费者都调用IP为“10.20.153.11”的服务提供者节点。


若服务消费者的匹配条件为空,就表示对所有的服务消费者应用,就像下面的表达式一样。

=> host != 10.20.153.11

若服务提供者的过滤条件为空,就表示禁止服务消费者访问:

host = 10.20.153.10=>

具体应用场景

排除某服务节点


=> host != 172.22.3.91

一旦这条路由规则被应用到线上,所有的服务消费者都不会访问IP为172.22.3.91的服务节点,这种路由规则一般应用在线上流量排除预发布机以及摘除某个故障节点。


白名单
host != 10.20.153.10,10.20.153.11 =>

除了IP为10.20.153.10和10.20.153.11的服务消费者可以发起服务调用以外,其他服务消费者都不可以。

host = 172.22.3.* => host = 172.22.3.*

比如某个后台服务只允许特定的几台机器才可以访问,这样的话可以机器控制访问权限。


黑名单
host = 10.20.153.10,10.20.153.11 =>


除了IP为10.20.153.1010.20.153.11的服务消费者不能发起服务调用以外,其他服务消费者都可以。

比如线上经常会遇到某些调用方不管是出于有意还是无意的不合理调用,影响了服务的稳定性,这时候可以通过黑名单功能暂时予以封杀。


机房隔离
host = 172.22.3.* => host = 172.22.3.*

IP网段为172.22.3.*的服务消费者,才可以访问同网段的服务节点。

一般应用于服务部署在多个IDC,理论上同一个IDC内的调用性能要比跨IDC调用性能要好,应用这个规则是为了实现同IDC就近访问。


读写分离
method = find*,list*,get*,is* => host =172.22.3.94,172.22.3.95
method != find*,list*,get*,is* => host = 172.22.3.97,172.22.3.98

find*、get*、is*等读方法调用IP为172.22.3.94和172.22.3.95的节点,除此以外的写方法调用IP为172.22.3.97和172.22.3.98的节点。

大部分业务读请求远大于写请求,而写请求的重要性往往要远远高于读请求,所以需要

目录
相关文章
|
5月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
608 0
|
2月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
5月前
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
257 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
5月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
292 0
|
9月前
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
361 14
文生图架构设计原来如此简单之分布式服务
|
8月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
475 12
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3323 36
微服务架构解析:跨越传统架构的技术革命
|
12月前
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
10月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
528 1

热门文章

最新文章