陌陌的 Service Mesh 探索与实践 | 线上直播回顾

深入探索Service Mesh:原理与实践 本文还有配套的精品资源,点击获取 简介:Service Mesh是一个在微服务架构中重要的组件,它负责管理服务间通信,解决分布式系统的问题。本文将深入分析Service Mesh的基本架构、核心功能及其在实际应用中的价值,涵盖服务发现、负载均衡、安全性和可观测性等关键方面。同时,将探讨Service Mesh的实现方法及面临的挑战,并提供对Istio、Linkerd等主流实... 阅读详情

Service Mesh Virtual Meetup 是 ServiceMesher 社区和 CNCF 联合主办的线上系列直播。本期为 Service Mesh Virtual Meetup#1 ,邀请了四位来自不同公司的嘉宾,从不同角度展开了 Service Mesh 的应用实践分享,分享涵盖来自陌陌和百度的 Service Mesh 生产实践,Service Mesh 的可观察性和生产实践以及与传统微服务中可观察性的区别,还有如何使用 SkyWalking 来观测 Service Mesh。

本文根据5月6日晚,陌陌中间件架构师高飞航的主题分享《陌陌的 Service Mesh 探索与实践》整理。文末包含本次分享的视频回顾链接以及 PPT 下载地址。

前言

本次演讲为大家分享的是陌陌目前正在进行的 Service Mesh 实践的相关内容。共分为三个部分:

  • 第一部分是原有微服务架构的相关背景;

  • 第二部分是原有架构遇到的问题以及决定采用 Service Mesh 方案的思考过程;

  • 最后的部分对Service Mesh落地实践的方案进行介绍;

陌陌微服务体系演进历程

单体应用到微服务

各个应用的发展过程,都会经历从单体应用、到应用拆分再到微服务架构这样一个过程。陌陌的这个演进过程,有一点比较特别的是,在应用拆分时加入了由 PHP 开发、与客户端 App 进行对接的 API 层,并采用 Java 开发底层具有复杂运算的业务逻辑,这样能够兼得 PHP 的开发效率与 Java 高性能的优势。

但这个选择的影响也是十分深远的,由于 PHP 在业务中的比重很高,我们在后续进行微服务改造和服务治理时,需要不断地去应对多语言架构带来的挑战。

微服务体系演进

陌陌的微服务架构改造从 2013 年就开始了,在当时还没有较为完善的服务框架产品的情况下,我们自研了服务框架产品 MOA,支撑了陌陌 IM、附近动态、直播、短视频等核心业务的高速发展历程。

在多年的迭代发展中,我们逐步完善了服务框架产品功能,同时也扩充了其他基础架构产品,最终形成了一个完善的微服务体系。其他基础架构产品也都是采用了自研的方案,因此整体是一个非常定制化的架构。这一点也成为后续 Service Mesh 落地选型时重点要考量的因素。

微服务体系整体架构

下面对微服务体系的整体架构进行介绍。我们采用了一个 Redis 作为底层存储的注册中心。服务实例的存活检测主要依赖一个中心化的检测应用 MOA Watcher,能够将无法连通的实例从注册中心的在线列表中移除、摘除实例的业务流量。

在多语言支持方面,我们除了支持最核心的 Java 与 PHP 应用之外,后续还支持了 Python、C++、Go、NodeJS 等非常多的语言接入微服务体系。由于陌陌的中间件团队是以 Java 工程师为主导的,服务框架组件的核心产品也是一个 Java 的 SDK。在没有足够的资源投入到其他语言 SDK 开发的情况下,我们采用了很多能够简化多语言开发工作的方案。

例如跨语言调用和 Java 应用内部调用会采用不同的协议,Java 内部是较为传统的自定义二进制传输协议与 Hessian 序列化,跨语言则采用了 Redis 传输协议与 JSON 序列化。Redis 协议分别利用 GET 命令的 key 和 value 的位置传递 Request 和 Response,这样每种语言都可以基于成熟的 Redis 客户端开发 SDK,避免重复编写复杂的网络通信逻辑。此外还增加了一个地址发现服务 Lookup,使其他语言能够像调用普通服务的方式,轮询获取目标服务地址。跨语言场景的这些方案虽然简化了开发工作,但却不是最优方案。这也为整体架构的长期发展埋下了隐患。

微服务体系的其他产品还包括统一的配置中心、监控平台、日志采集平台、分布式跟踪系统等,这些都是为微服务体系保驾护航的重要基础架构能力。

流量代理机制

在多语言支持的场景中,我们很早就采用了两个和 Service Mesh 非常相近的方案。一个是为了支持多语言发布服务的入流量代理方案,使用 Java 开发的 Proxy 复用了 Java SDK 注册发现与监控等诸多服务治理能力,使得其他语言仅简单处理本地请求后就能实现发布服务。这些 Java Proxy 与多语言的业务进程是 1:1 部署的,但当时的方案是和业务进程放在一个容器里,升级时需要和业务进程一起重新发布。

另外一个方案是为了解决 PHP 并行调用下游服务而实现的出流量代理,但这个方案中代理层的进程是运行在独立的服务器上,没有部署在与调用端相同的服务器。

我们将流量代理机制应用于多语言服务治理的经历,在某种程度上突显了 Service Mesh 的价值,我们可能想到类似的方案去解决问题,但都没有像 Service Mesh 一样系统地给出一种最佳方案。不过这些相近方案的经验是有助于我们后续去推进 Service Mesh 落地的。

微服务体系规模

随着业务的发展,整个微服务体系也达到了一个很具有挑战的量级。特别是在服务数量大幅增长后,Java 应用的服务治理问题也逐步暴露出来,其中最难以解决的是 SDK 升级的问题,这一点也是进一步推动我们转向 Service Mesh 架构的原因。

借助 Service Mesh 解决现有架构的痛点

架构痛点分析 

前面我们提到的各种问题,其实都可以归结为微服务体系中服务治理能力滞后的问题。对于非 Java 的应用,由于没有足够的开发资源,会导致服务框架的 SDK 迭代进度非常缓慢。对于 Java 应用,虽然 SDK 具备最完善的功能,但使全量应用完成升级需要耗费大量人力和时间。根据以往的经验来看,一次推广至少需要一个季度的时间,并且为业务团队带来很多不必要的负担。

两种场景最终的危害是一致的,都会导致架构能力上无法实现统一,先进的功能无法覆盖到全部应用,使应用稳定性受到损失,甚至引发故障。我们在多语言方案中依赖的中心化的 Lookup 服务,曾经就因为一次服务异常导致整个 API 层不可用,原因就是 PHP 的 SDK 采用了一种有缺陷的机制没有升级。在我们设计新方案时,也会因为架构能力无法统一而无法采用最佳的方案。例如我们在设计多机房架构时,由于流量调度机制无法快速覆盖到全部应用,因此只能采用从应用入口整体调度流量的一种粗粒度的方案。

引入 Service Mesh

Service Mesh 将基础架构逻辑与业务逻辑解耦、并支持独立升级的方式,能够很好地解决前面描述的架构痛点。但引入 Service Mesh 是一项非常重大的架构变更,并且需要多方面的成本投入。因此在实际落地实施前,我们必须思考以下几个问题,并在不同阶段完成对应的工作。

  • 第一个是方案是否足够成熟。这里的方案不局限于 Service Mesh 本身,也依赖公司内其他基础设施的演进积累。例如我们在观察阶段实现了应用容化的推广覆盖、日志 Agent 方案的经验积累等。

  • 第二个是遇到的问题是否有其他替代方案。例如我们之前急需在多语言场景覆盖的一个能力是流量调度机制,尝试过一个只提供地址路由机制,不代理流量的 Agent 方案。但发现很多逻辑还是要保留在 SDK 中,最终放弃了这个方案。

  • 第三点是能否接受方案带来的成本,包括性能损耗、服务器消耗、研发投入等。评估阶段我们在性能损耗方面做了非常详尽的分析,给出采用 Service Mesh 方案后对顶层 API 接口耗时增长的影响。

  • 第四点是这项方案带来的价值,是否是当前最迫切需要的?公司或部门在不同阶段会存在不同的目标。只有契合团队的整体目标,相关工作才能得到最大的支持、顺利启动与开展。大家在推广 Service Mesh 方案时,也不妨等待一个最佳的时机。

Service Mesh 架构在陌陌的落地实践

方案选型

在 Service Mesh 领域当前最热门的开源方案是 Istio,但也有很多像蚂蚁金服、美团等公司采用了自研的方案。在这两个方向的选择上,我觉得最重要的还是要结合公司的实际情况。在陌陌的场景下,我们重点考虑了三方面的问题。

  • 第一点是与现有架构的兼容性。我们的首要目标是使存量服务接入 Service Mesh 方案,而不是构建一个全新的应用,并且我们需要对接大量自研的内部系统。这一点上我们倾向使用自研的方案。

  • 第二点要考虑现阶段的关键需求。当前最迫切需要解决的是多语言服务治理与 SDK 升级的问题,这两个关键的收益都是由数据平面产出的,暂时并不急需完善的控制平面功能。在这一点上我们倾向于优先实现数据平面方案的落地,并通过自研的方式逐步建设控制平面功能。

  • 第三点是技术储备与原则类的因素。目前我们整体架构中没有核心的业务或组件是用 Go 语言来开发的,也无法快速补充人才储备来支持 Go 语言方案快速开发与长期维护。Java 是我们积累最多的服务端开发语言,原有的服务框架产品也能够提供很多直接的实践经验。

综合上述原因,我们最终选择了数据平面与控制平面均自研的方案,并采用 Java 开发数据平面的 Proxy Agent。

MOA Mesh 整体架构

在我们的 MOA Mesh 整体架构中,数据平面是我们现阶段的重点目标。代理流量的 Agent 需要支持现有服务调用请求的转发,并具备平滑升级机制以实现独立的迭代升级。

控制平面会作为一项长期的规划逐步进行建设,当前的方案中计划增加一层轻量的 Pilot Proxy,以实现数据平面与其他内部系统的解耦。Pilot Proxy 与其他组件、系统的交互协议,将优先采用 Istio 的标准协议,为长期向社区方案靠拢提供可能。

数据平面实现细节

在数据平面的实践细节部分,会重点向大家介绍三个关键环节的设计方案,与三个需要重点关注的问题。

部署方式

第一项关键的方案是部署方式。Agent 会采用 Sidecar 方式,与业务进程 1:1 部署。在容器化场景,Agent 会运行在与业务进程相同的 Pod、不同的 Container 中。由于陌陌当前微服务的容器化部署比例很高,这种容器化方案已能覆盖大多数的业务场景。少数物理机或虚拟机部署的场景,可以通过一些定制化的方案解决。

业务在接入 Mesh 方案时,目前没有依赖 iptables 机制,而是通过一次 SDK 升级让新版 SDK 将流量发送给本地的 Agent。这一点上我们觉得如此重大的架构升级,让业务升级一次 SDK 是可以接受的。升级步骤中还加入了一个发布项配置,使运维同学能够更灵活地开启或关闭 Service Mesh 运行模式。

升级方式 - 平滑升级机制

第二项关键的方案是平滑升级,这项方案是能否实现数据平面独立迭代升级的关键机制。我们需要实现升级过程不需要业务团队参与,具体需要做到业务进程不重启、并且使业务进程的流量保持不变。

在实现方案上,我们有过一次比较深入的讨论,是采用类似于 MOSN 的 FD 迁移方案,还是采用将流量临时切换到公共 Agent 集群的方案。最终我们选择了对业务感知更少的 FD 迁移方案,这一点上 MOSN 为我们做了很好的示范、取得了很好的效果。

FD 迁移的原理方面,社区中介绍的文章很多,这里不详细展开讲解了。对我们的一个新挑战是,如何用 Java 来实现 FD 迁移?因为 Java 并不像 Go 语言一样,可以直接调用 send 和 recv 以及其他操作系统底层的接口。对 Java 来说,至少要通过 JNI 调用这些底层接口的方式来实现。幸运的是 Java 的网络库 Netty 已经实现了相关 JNI 调用的封装并提供了 SO 库,我们可以直接基于 Netty 的 Java API 实现 FD 迁移机制。

云原生网络代理 MOSN:

https://github.com/mosn/mosn

升级方式 - 发布流程

FD 迁移只解决了新旧 Agent 平滑替换的问题,Agent 升级还需要一套完整的发布流程来支持。由于 FD 迁移要求升级过程中同时存在新旧两个 Agent,针对这个场景我们考虑了三个备选方案。

  • 第一个是像 MOSN 一样,通过注入一个新的 Container 来启动新 Agent 进程,但注入 Container 的机制原生的 K8s 是不支持的,需要通过修改源码才能实现。目前我们认为修改 K8s 源码后期维护成本太高,是无法接受的方案。

  • 第二个方案是预留一个占位的 Container,Pod 启动时 Agent 运行在1号 Container,需要升级时在2号 Container 启动新 Agent。虽然这种方案能实现平滑升级,但 Agent 实际运行在哪个 Container 的状态是难以维护并且和其他发布流程冲突的,因此这个方案也无法被接受。

  • 最后我们采用了第三种方案,让 Agent 在同一个 Container 内部完成升级。在原来的 Container 里面启动新 Agent,完成升级后旧 Agent 进程退出。但这种方案无法再通过 Agent 容器镜像来发布 Agent,而是需要在 Container 中拉取新 Agent 的部署文件并启动进程。这项运维操作,我们通过增加一个新的运维 Agent 进程来实现。

运维 Agent 随 Container 启动,后续 Proxy Agent 的部署工作,均由运维 Agent 管理。运维 Agen t提供 HTTP 接口,接收运维 Agent 管理服务发送的部署操作指令,完成单个 Pod 的 Proxy Agent 升级。而一个应用全部 Pod 的升级流程,由发布系统编排并调用运维 Agent 管理服务来执行。

容灾方式

第三个关键方案是数据平面的容灾方式。这个方案中我们遵循的原则是尽可能简单,复用原有服务治理的能力。对于大多数应用,Agent 代理的出流量都是由入流量产生的,当 Agent 发生故障时,只要将入流量摘除,业务流量就不再受异常 Agent 的影响。由于代理入流量后注册服务的端口会改为由 Agent 监听,原有微服务体系的健康检测机制通常能直接满足容灾要求。

但也有一些特殊类型的应用,如流式计算节点、定时任务等,Agent 代理的出流量无法通过摘除入流量来容灾,此时需要单独设计出流量的容灾机制。在这种场景下将流量切换至同应用的其他 Agent 是最佳的选择,因为同应用内的 Agent 具有相同的配置、资源和鉴权要求。切换至本应用其他 Agent 的方案,具有最小的切换代价和最高的稳定性。

性能问题

其他经常被关注的问题,首先是性能问题。在微服务体系中应用间的调用链路是非常复杂的,看似微小的耗时增长,叠加以后对顶层的接口与业务的影响也会是非常巨大的。因此 Agent 代理流量之后缩减服务调用的耗时增幅,是 Service Mesh 落地过程中非常重要的一个目标。

在整体方案上,我们需要考虑是否新增通信协议。MOA 原有的跨语言协议不包含 header 字段,因此 Agent 在转发请求时,必须 decode 整个请求体才能获得服务名、方法等请求路由信息。新协议加入可扩展的 header 字段后可消除这个步骤的开销。此外 header 字段不涉及业务请求数据的序列化,可以使用 ProtoBuf 代替 JSON 提升性能。Redis 协议不支持单连接并行处理请求,这一点可以加入 RequestId 进行连接复用优化,通过设置合理的连接数进一步优化性能。

Agent 内部我们也进行了一些优化工作,如针对 Java 语言减少 GC 压力的对象池机制,以及响应等待的非阻塞机制等。另外在缩减耗时增幅绝对值这个目标下,服务器性能是一个非常关键的因素。在衡量耗时增幅时需要使用和生产环境一致的服务器,而不能使用低配的测试服务器。

截止目前的测试结果来看,在 1K QPS 和 1K 消息体这个标准场景下,一次服务调用、Agent 两次请求转发的累计耗时增幅可以优化至小于 0.2ms。基于我们对整个服务端调用链路的分析,预计在所有服务都接入 Service Mesh 方案后,顶层 API 接口的耗时增幅将小于6%,这是一个我们能够接受的性能损耗成本。

资源问题

第二个重要的问题是资源消耗。首先在资源分配上,我们采用了 Agent 容器与业务容器共享资源配额的方案。由于业务进程与 Agent 进程二者是缺一不可的,这是一种比较合理的的分配方式。

在标准场景下,我们会为 Agent 分配 256M 的内存,算上可能使用到的堆外内存,运行时大约需要占用 300M 内存。由于平滑升级过程中,容器内会同时运行2个 Agent,所以实际需要预留 600M 的内存空间。

在这样的内存资源消耗下,我们评估全部服务接入 Service Mesh 方案后新增的服务器消耗约为 10%。但这项数据是维持现有内存使用百分比,以及服务器内存配置不变的最坏情况。实际在挖掘业务容器内存空间、采购大内存服务器后,这项数据可以进一步优化。

对于采用 Java 开发 Agent 的方案,资源消耗的劣势会非常明显,这一点是无法回避的问题。选择这个方向,是综合整体的情况考虑,通过牺牲服务器资源换取方案长期稳定性的一种选择。

兼容问题

最后一个问题是关于如何兼容原有架构。一方面存在数据平面先上线,控制平面尚未就绪的状态。此时要求数据平面 Agent 能够与其他系统通过原有的 SDK 与接入方式进行对接,不会导致原有功能无法使用。另一方面一定会出现一部分服务先升级,另外一部分服务尚未升级的场景。此时为了支持两类服务间能够互相调用,Agent 必须支持以原有通信协议处理请求,以及根据服务端的升级情况选择适当的协议发起调用。

总结与展望


通过实践经历我们发现,Service Mesh 确实能够解决微服务领域的关键架构痛点。并且是以一种全新的理念,直接给出这些问题的最优解。但何时引入 Service Mesh 架构,需要结合实际情况、选择一个适当的时机,以便能快速达成目标。

陌陌当前的进展是完成了数据平面的研发与线上业务的小流量验证。未来还有很多的工作要做,业务大规模推广落地之后才能使 Service Mesh 的价值真正发挥出来,我们计划在年内实现这个目标。

长期规划中我们的方案会逐步向社区靠拢,因为通过社区的力量能够建设出更完善的产品。对于我们当前采用的基于 Java 的方案,我们也计划在整体方案完善之后通过开源等方式贡献给社区,提供给同样需要 Java 方案的公司和团队。

以上就是此次分享的全部内容,感谢大家的关注与支持!

嘉宾介绍

高飞航,陌陌中间件架构师,在微服务、多机房架构及中间件产品领域有较为深入的研究,当前关注 Service Mesh、云原生等技术方向。

回顾视频以及 PPT 下载地址

视频回顾:

https://www.bilibili.com/video/BV1xQ4y1N7PR/

PPT 下载:

https://github.com/servicemesher/meetup-slides/tree/master/2020/05/virtual

相关文章阅读推荐

本文归档在 sofastack.tech。

???? 奖励支持 SOFAStack 的你~

* 点下右下角“在看”

* 到公众号对话框发送“T 恤”,试试手气~

* 本期互动奖品“SOFAStack 两周年纪念 T 恤”

易语言陌陌网页版本协议 易语言陌陌web版本协议,有聊天功能和查看好友列表功能。 立即下载

相关推荐

华为多年实践:ServiceComb在ServiceMesh的探索与思考

我们今天围绕三个主题来讲,首先会讲一下ServiceMesh在华为多年的实践,另外会介绍一些实践的方法,最后会介绍几个案例来带大家看一下,我们是怎么在实践中帮助企业在生产环境中使用ServiceMesh。实际上我们在做微服务的时候,整个演进的过程中要解决很多微服务架构带来的复杂的问题。我个人曾实现过一个Go版本的微服务开源框架,这个框架有大概2万行左右的代码,并交付给业务使用,这个过程耗时非常长,实际上一般的公司是没有这个实力去交付的,另外可能还需要一些时间去让开发者去适应框架。对此的另一种解决方案是使用ServiceMesh,这是一个网络模型,不同于开发框架在应用层和应用耦合在一起,以

陌陌的 Service Mesh 探索与实践

Service Mesh Virtual Meetup 是 ServiceMesher 社区和 CNCF 联合主办的线上系列直播。本期为 Service Mesh Virtual Mee...

ServiceMesher 991

跟着团子学SAP CO:熟练使用结果分析码实现各个场景下收入成本的匹配(一) KKA2/CJ88

PS模块中对财务顾问最难的点在于项目结算,特别是销售型的项目结算。针对客户型项目结算我列举了以下常见的收入成本匹配的一些场景: (1)在项目执行过程中会多次开票,但由于各期成本浮动很大(如前期可能只涉及一些人工、中期全是比较金额较大的材料费),所以希望开票的时候能通过合理的一些指标进行主营业务成本与主营业务收入的匹配。 (2)项目过程中会多次开票,开票确认主营业务收入时,直接将累计发生的实际成本结转为主营业务成本。 (3)项目过程中虽多次开票,但不确认收入,所有发生的实际成本月末计算为在制品,最后项目一次性

Lucas1211的博客 9534

微信、陌陌等著名IM软件设计架构详解

对微信进行了分析,发出来分享一下(时间有些久了) 电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。 流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。 网络: 1 两个域名 微信划分了http模

justinjing的专栏 17万+

转换shp坐标系之前,设置转换的投影

1.点击目录》工具箱》系统工具箱》Data Management Tools.tbx》投影和变换》创建自定义地理(坐标)变换 2.名称自定义 2.输入地理坐标系可以根据所需要转换的shp文件属性中查询出来 把图层拖入arcgis中,右键属性即可查看 3.复制坐标系,点击“输入地理坐标系”右侧的按钮后,粘贴在顶部搜索框中,并按enter键,选择对应的坐标系 4.点击“输出地理坐标系”右侧的按钮后,选择转换后的坐标系,如4326,选择后点击确认按钮。 5.自定义方法中选择

Wangwangwang___的博客 1863

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

Java 接口与抽象方法

Java中的接口 在Java 9+版本中,接口的内容可以有: 成员变量其实是常量,格式: [public] [static] [final] 数据类型 常量名称 = 数据值; 注意: 常量必须进行赋值,而且一旦赋值不能改变。 常量名称完全大写,用下划线进行分隔。 接口中最重要的就是抽象方法,格式: [public] [abstract] 返回值类型 方法名称(参数列表); 注意:实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。 从Java 8开始,接口里允许定义默认方法,格式: [pu

charxupengfei的博客 464

【swjtu】算法实验2.4分析算法时间复杂度

分析给定算法的时间复杂度。 上机实验,绘制不同输入情况下的运行时间曲线,并与(1)中的分析结果进行比较。 撰写相应的实验报告,实验报告内容包括:实验目的、实验任务、 实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容。

qq_52046937的博客 731

ServiceMesh介绍(一)_service mesh,2024年最新快来收藏

服务网格:指的是微服务网络应用之间的交互,随着规模和复杂性增加,服务跟服务调用错综复杂如下图所示如果每一个格子都是一个sidecar数据平面,然后sidecar进行彼此通信,那么servicemech就是来管理每个格子的控制平面,这就是服务网格,从架构层面看起来跟网格很像特点:基础设施:服务网格是一种处理服务之间通信的基础设施层。支撑云原生:服务网格尤其适用于在云原生场景下帮助应用程序在复杂的服务间可靠地传递请求。网络代理:在实际使用中,服务网格一般是通过一组轻量级网络代理来执行治理逻辑的。

jixuczy的博客 2191

56、Cortex - M33处理器浮点单元(FPU)的使用与优化

本文详细介绍了Cortex-M33处理器浮点单元(FPU)的使用与优化方法,涵盖单双精度浮点计算的选择、编译器命令行配置、ABI模式对比、特殊FPU模式设置(如Flush-to-Zero、Default NaN)、浮点异常处理机制以及FPU电源管理策略。结合代码示例和流程图,提供了在不同应用场景下的最佳实践建议,并总结了常见问题及解决方案,帮助开发者提升嵌入式系统中浮点运算的性能、精度与能效。

bread的博客 154

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1986

陌陌 Service Mesh 架构的探索与实践

作者丨高飞航策划丨田晓旭2016 年,Service Mesh 进入公众视野之后一直保持着高速发展的状态,目前已成为业内广泛认可的下一代微服务架构,并且被 CNCF 列入构建容错性好、...

weixin_45727359的博客 774

《QGIS快速入门与应用基础》021:插件仓库 URL 获取与添加

详细介绍了在QGIS中添加第三方插件仓库的方法。首先强调必须从官方推荐、开源社区等可靠渠道获取插件仓库URL以确保安全性,并列出了4类可信获取渠道。文章分步骤讲解了URL添加流程,包括打开插件管理器设置面板、填写仓库信息、刷新缓存验证等操作。针对常见问题如URL格式错误、连接失败等提供了具体解决方案。最后总结指出,成功添加第三方仓库后即可直接搜索安装各类专业插件,从而扩展QGIS功能边界。全文注重实操指导,特别适合需要安装行业专用插件的QGIS用户参考。

LuckyHanMo的博客 465

SOFA Weekly | Service Mesh 系列直播回顾、SOFARPC 剖析回顾

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)...

金融级分布式架构 421

LangChain .NET:C#开发者构建AI应用的RAG框架与实战指南

大语言模型(LLM)作为当前人工智能的核心技术,通过深度学习海量文本数据,掌握了强大的语言理解和生成能力。其原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系,从而实现对复杂语义的建模。这一技术价值在于能够将非结构化的自然语言转化为可计算、可推理的表示,为各类智能应用提供认知基础。在实际工程实践中,LLM常被应用于构建检索增强生成(RAG)系统和AI智能体(Agent)。RAG通过结合外部知识库检索与LLM生成,有效提升了问答的准确性和事实性,是构建企业知识库、智能客服等场景的关键技术。

weixin_42538175的博客 705

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SOFA Weekly | MOSN 发版、Service Mesh 相关文章整理、社区直播预告

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)...

金融级分布式架构 379

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SOFA Weekly | Service Mesh 相关阅读合集、SOFABoot 以及 Seata QA 整理

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)...

金融级分布式架构 293

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Service Mesh实战

Service Mesh技术历经三年多,无论是国内还是国外,这门新技术相关的资料和书籍都太少,网络上也鲜有成体系的课程,这给学习者增加了时间成本。然而,很多开发者一方面对Service Mesh的概念不太了解,没有办法很好地理解Service Mesh的核心功能。另一方面,Service Mesh实践和落地的学习内容也很有限,这为想要深入学习和进行实践的开发者带来了不便。 因此,本课程从回顾服务网格的发展历程讲起,让你能够更好的理解它的概念和核心功能。通过实战演练,熟练掌握Istio流量控制、安全、服务可

yuanzhaomiao1974的博客 780

如何通过 Service Mesh 构建高效、安全的微服务系统

Service Mesh 是一种基础架构层,负责处理微服务之间的通信,它通过在每个服务旁边部署代理(通常称为 Sidecar)来捕获和管理服务间的网络流量。这种方式解耦了微服务的业务逻辑和基础设施层的管理工作。Service Mesh 提供了诸如流量管理、服务发现、负载均衡、安全(如 mTLS)、故障恢复、可观察性(如日志、监控和分布式追踪)等功能,而这些功能都无需修改微服务的应用代码即可实现。

hello.reader 2201

从蚂蚁金服实践入手,带你深入了解 Service Mesh

本文整理自蚂蚁金服高级技术专家敖小剑在 QCon 上海 2018 上的演讲。我是来自蚂蚁金服中间件团队的敖小剑,目前是蚂蚁金服 Service Mesh 项目的 PD。我同时也是 Servicemesher 中国技术社区的创始人,是 Service Mesh 技术在国内最早的布道师。我今天给大家带来的主题是\u0026quot;长路漫漫踏歌而行:蚂蚁金服 Service Mesh 实践探索\u00...

cpongo011702 2986

陌陌通讯协议的学习

陌陌发展刚开始由于规模小,30-40W的连接数(包括Android后台长连接用户),也使用XMPP;由于XMPP的缺点:流量大(基于XML),不可靠(为传统固定网络设计,...

哲洛不闹的专栏 1015

有了微服务和云原生,为什么还要懂Service Mesh?

Service Mesh技术作为新一代微服务架构,有效的解决了当前微服务架构和治理过程中的痛点问题,一经推出便引起很大的反响,近两年持续成为架构领域的热点。特别是Google联合Lyft等公司推出的Istio,架构优雅,功能强大,迅速成为Service Mesh领域的明星项目。

weixin_74412978的博客 1762

网易严选ServiceMesh实践

本文根据网易高级技术专家王国云于第九届 Service Mesh Meetup 杭州站上分享的整理而成。背景Service Mesh在严选的探索与实践大致分了以下几个阶段。第一个阶段是探...

ServiceMesher 1396

干货 | 携程Service Mesh可用性实践

作者简介本文作者烧鱼、Shirley博,来自携程Cloud Container团队,目前主要从事Service Mesh在携程的落地,负责控制面的性能优化及可用性建设,以及推进各类基础设...

携程技术 986
上一篇: SOFA Weekly | MOSN&SOFARPC 发布、社区活动报名
下一篇: Mecha:将 Mesh 进行到底
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值