微服务之间的最佳调用方式 (微服务之间的调用)

本文目录导航:

微服务之间的最佳调用方式

在微服务架构中,服务之间如何互相调用是一个关键问题。

服务调用主要有两种方式:RPC方式和事件驱动(Event-driven)方式,也就是发消息方式。

消息方式通常被认为是松耦合方式,比紧耦合的RPC方式更优越,但RPC方式在适当场景下也有其价值。

耦合是衡量服务之间依赖关系的一个指标。

主要的耦合类型包括时间耦合、容量耦合、接口耦合和发送方式耦合。

时间耦合指的是客户端和服务端必须同时在线才能工作;容量耦合指客户端和服务端的处理能力必须匹配,消息队列可以缓冲不足;接口耦合指的是RPC调用有函数标签,而消息队列仅传递消息;发送方式耦合则是RPC是点对点方式,而消息队列支持点对点和广播,减少耦合但使返回值较困难。

事件驱动方式分为事件通知(Event Notification)和事件溯源(Event Sourcing)。

事件通知是松耦合的集成方式,微服务之间通过发送消息进行合作;事件溯源则是一种存储数据的方式,将所有事件记录下来作为永久存储层,构建应用程序。

事件通知是微服务调用方式,事件溯源是数据存储方法。

事件通知方式在创建“Order”时需要读取“Customer”和“Product”数据,通过消息同步完成。

写数据时,如创建“Customer”或修改信息,通过用户创建页面跳转,创建用户后发送消息通知“Order Service”更新本地“Customer”表。

然而,由于“Order”和“Customer”逻辑上紧密相关,事件通知在紧耦合情况下可能效果有限。

为了解决紧耦合问题,可以使用RPC或引入上层管理程序。

尽管这样并未解除耦合,但可以避免服务之间的直接依赖,提高系统的灵活性。

对于购物流程这样的应用,事件驱动是一个不错的选择。

例如,在“Checkout”服务完成后发送“Order Placed”消息,然后“Payment”服务收到消息后处理付款,发送“Payment received”消息,“Inventory”服务收到消息后处理取货,最后“Shipment”服务处理发货。

这种方式降低了耦合度,但需要在程序中处理消息,而不是直接跟踪整个流程。

当业务逻辑有固定流程时,RPC或业务流程管理(BPM)可能更方便管理。

选择事件驱动还是RPC依赖于技术优势和业务需求。

事件驱动方式逐渐成为微服务之间集成的标准调用方式,特别是在大多数情况下。

事件溯源是一种颠覆性的设计方法,将系统中的数据以事件的方式记录下来,并提供操作事件的接口,如事件的读写和查询。

事件溯源适用于领域驱动设计(DDD)中,通过有界上下文(Bounded Context)划分微服务。

在不同的有界上下文中,共享成员如“Customer”和“Product”需要在各自的上下文中分别建立类,以确保一致性。

事件溯源作为一种存储方式,可以单独应用于某些微服务,而不必所有服务都采用。

Event Store用于存储事件,不同微服务通过向Event Store发送和接受消息进行通信。

事件溯源的不足在于数据查询,但可以通过直接查询stream或建立只读数据库来解决。

事件溯源的程序实现复杂,且修改事件格式较为困难,但其优势在于可以回放历史状态。

事件通知和事件溯源表面上相似,但它们实际上属于不同的概念。

事件通知是集成方式,而事件溯源是存储方法。

在集成时使用事件通知,而在内部实现时,事件驱动通常结合数据库使用。

尽管事件溯源的使用正在增长,但它对现有体系结构的颠覆性影响较大,需要对数据存储结构和程序工作方式进行调整。

微服务已经形成了一套体系,包括程序部署、服务发现与注册、监控、服务韧性等,这些主要针对RPC方式。

因此,在实施事件溯源时,可能需要自己解决一些问题。

服务网关(API Gateway)可以简化客户端工作,减少函数间的耦合度。

借鉴API Gateway的思路,可以将多个微服务组织成一个提供统一服务接口的完整功能服务组合,降低RPC调用的耦合度。

降低紧耦合的影响主要有两种方法:同时支持多个版本和服务端向后兼容。

前者工作量较大,大多数公司不会采用,后者是更通用的方法,允许新旧客户在不修改程序的情况下使用服务。

微服务的数量不应过多,一般规模的公司可以承受十几个到几十个微服务。

然而,如果微服务数量超过几百个甚至上千个,将难以管理。

虽然工具已经自动化大部分流程,但工作量仍然较大。

从单体程序开始,逐步拆分为微服务是一种推荐做法,但应根据团队情况和管理需求灵活调整。

微服务之间调用方式的选择应基于业务需求和技术优势。

事件驱动方式通常被认为更佳,因为它能降低服务间的耦合度。

然而,在紧耦合的业务逻辑中,RPC方式仍然有其适用场景,特别是当使用合适的协议如Protobuf gRPC时,可以降低紧耦合的影响。

内部微服务设计是一个折中的方案,它将单体程序设计为多个微服务,以减少部署和运维的复杂性。

微服务之间的最佳调用方式 (微服务之间的调用)

鸿蒙实战开发学习:【HiView插件开发】

Hiview是一个跨平台的终端设备维护测试服务集成系统,由插件管理平台和插件实现各自功能构成。

本文详述Hiview插件开发全流程。

插件概念涉及事件源、流水线等基本概念。

Hiview插件是运行在Hiview进程内,与Hiview二进制一同发布的,专门用于维护、故障管理的独立功能模块。

插件可以是事件驱动的,分为自驱动事件源与外部事件驱动。

事件驱动方式包括流水线驱动与订阅查询驱动。

单个插件支持静态加载(永不卸载)与插件代理加载,代理加载包括开机不加载、运行时动态加载与卸载、开机加载后再动态加载卸载。

选择代理加载的插件可动态卸载与加载,在卸载后,当外部事件触发,可再次加载。

特定插件通过继承Plugin类实现功能,以多态形式存在于插件管理平台中。

插件的事件处理或驱动机制需继承Plugin并实现相关方法或接口。

插件生命周期目前仅包含OnLoad和OnUnload两个回调。

动态插件表示以形式体现的单一实体,名称为。

动态插件与动态加载卸载插件、插件包的没有关系。

动态插件与静态插件功能无异,仅区别于实现形式。

插件注册方式有三种。

事件源定义继承EventSource实现特定功能,事件源是特殊插件,继承Plugin实现方法或接口。

事件源实例在文档中展示。

插件包概念允许将多个插件编译为独立形式,对应一个plugin_config文件。

插件包在平台中独立运行,内部功能与Hiview二进制中插件无差异。

流水线用于多个插件协同完成任务,顺序执行。

事件源与流水线对应,事件源可以绑定多个流水线,流水线包含多个插件。

事件源初始化后调用PublishPipelineEvent向绑定流水线分发事件,流程在文档中示例。

Hiview配置通过平台配置文件指定插件配置文件路径等信息。

平台配置文件默认位于/system/etc/hiview/hiview_platform_config,内容包括平台配置信息。

插件配置通过编写build/plugin_文件配置信息,编译自动生成plugin_config文件。

插件配置需包含内容示例。

独立插件包的插件配置直接编写xxx_plugin_config,不编写plugin_。

plugin_config文件示例完整内容可参考文档。

插件平台提供事件驱动模式,事件类型在文档文件中定义。

事件订阅分为单独订阅者EventListener模式与插件中动态订阅者模式。

平台功能接口通过调用GetHiviewContext()获取上下文,主要功能接口示例。

以事件源为例讲解注册、流转、监控机制,鸿蒙OpenHarmony知识已更新。

简述:事件驱动策略。一看就懂

事件驱动策略,作为股票主题投资中的一种,其核心在于研究股价对特定事件的反应,以预测是否会产生波动以及可能产生的“异常报酬率”。

这一策略基于市场对事件的不同反应而寻找投资机会,从而获取超额收益。

常见的事件驱动类型包括但不限于并购重组、高管增持、定向增发、高送转和股权激励。

并购重组事件,通常伴随着公司结构的调整与业务的整合,其后股价的反应可能带来投资机会。

市场参与者对重组后的公司前景的预期差异,会引发股价波动,而这些波动往往能为投资者带来超额回报。

然而,分析并购重组事件时需谨慎,因为其不确定性较大,且市场对事件的反应并不总是符合预期。

高管增持被视为积极信号,表明公司管理层对未来发展持有信心。

这通常会导致股价上涨,为投资者带来潜在的收益。

然而,高管的增持行为也需结合市场整体状况、公司基本面等因素综合判断,以避免盲目跟风。

定向增发是上市公司向特定投资者发行股票的融资方式。

这一事件可能会引发股价波动,因为投资者对增发后公司资本结构、盈利能力以及未来增长预期的评估差异,会导致市场反应不同。

定向增发对股价的影响复杂,需深入分析。

高送转是指上市公司通过分红、送股或转增股本等方式,将盈余回馈给股东。

这一事件可能引起股价上涨,因为市场普遍认为高送转表明公司对未来发展充满信心。

然而,高送转也需与公司业绩、市场估值等因素结合考虑,以避免误判。

股权激励是公司通过授予员工股票期权、限制性股票等方式,激发员工积极性,促进公司长期发展。

这一策略可能引发股价波动,因为市场对股权激励效果的预期不同,从而影响股价。

分析股权激励事件时,需考虑其对公司业绩、员工激励效果等因素的综合影响。

综上所述,事件驱动策略通过深入分析市场对特定事件的反应,寻找投资机会,以获取超额回报。

然而,策略实施过程中需要细致分析事件本身、市场反应以及公司基本面等多方面因素,以避免潜在风险,实现稳定增长。

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

85阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

85阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

77阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读