一种支持热插拔的服务端插件设计思路

定位

服务端插件是一个逻辑扩展平台,提供了一个快速托管逻辑的能力。

核心特点

  1. 高性能:相对于RPC调用,没有网络的损耗,性能足够强劲。

  2. 高可靠:基于线程隔离,保证互不影响,插件的资源占用或崩溃等问题不直接影响业务。

  3. 部署快:不需要发布审核流程, 插件本身逻辑简短,编译速度快,基于版本管理可以快速回退。

  4. 易用:可以根据业务需求支持不同语言的插件

相比传统的将服务和逻辑写在一起:减少了服务发布和变更;支持更多的语言实现不同的逻辑;支持热插拔;

相比faas函数计算服务:减少了网络传输的损耗,性能更高。

相比于传统SDK插件模式优点在于:

  • 语言无关,核心业务逻辑只需要实现一遍;

  • 业务接入成本低,通常不需要关心升级,某些场景下甚至可以不需要 IPC 用的轻量级 SDK;

  • 可以按自己的节奏推进版本升级,不必慢慢等待业务自己将其升级到最新版本;

  • 发现线上有版本存在问题,可以直接切换至确认没问题的新/旧版本,而不必拉群通知业务升/降级。

适用场景

  • 存在一种需要经常变更的公共逻辑

  • 此逻辑对网络延迟敏感

  • 此逻辑变更时希望业务方无感

比如在电商行业中,商品的优惠计算逻辑。不同的商品需要配置不同的优惠计算逻辑,此优惠逻辑经常随着时间发生变更;优惠计算请求频繁对延迟敏感;在变更优惠计算逻辑的同时不希望影响其它服务(商品、支付、购物车)。

综上可以看到插件模式由于实现成本不低,适用业务范围较窄,在使用的时候应谨慎评估ROI。

实现

  插件类型

  Go 原生插件

  基于 Go 原生的 plugin 机制(https://golang.org/pkg/plugin/),拥有与本地函数调用同样的性能,但是本身限制较多,比如插件与宿主服务必须使用完全相同的依赖库版本,编译镜像需要一致等等,对于其中的大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/125889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Overload游戏引擎细节分析】PBR材质Shader---完结篇

PBR基于物理的渲染可以实现更加真实的效果,其Shader值得分析一下。但PBR需要较多的基础知识,不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染,其理论较多,需要的基础知识也较多,我在这就不再写一遍了&…

JVM虚拟机:如何调整堆空间的大小?

对内存的调优 如上所示,从物理角度来说呢,堆内存就是蓝色的区域,从逻辑角度来说,堆内存包含这个红色的部分,调优肯定是条物理的大小了,我们先来看一下物理内存的大小是多少? 如上所示,我们通过maxMemory获取到java虚拟机试图使用的最大内存量,默认为物理内存的1/4,比我…

SEO优化应该注意哪些细节?

SEO优化是一项细致的工作,需要关注细节,因为在很多情况下,被忽略的细节决定了优化的成败。俗话说:细节决定成败。 以下是我知道的一些小细节,希望能对一些新站长有所帮助。 1.内容非常重要。尝试使用原始或伪原始。原件…

where怎么等于多个值,sql where多个值

在SQL中,可以使用IN和OR操作符来匹配多个值,以在WHERE语句中执行过滤。以下是一些示例: 使用IN操作符匹配多个值 可以使用IN操作符来匹配多个可能的值,如下所示: SELECT * FROM 表名 WHERE 字段名 IN (值1, 值2, 值3…

Linux期末复习——多线程编程

线程概述 线程基本编程 函数说明 pthread_create(): 创建线程,成功返回0pthread_exit(): 主动退出线程,成功返回0pthread_join(): 挂起线程等待结束,成功返回0pthread_cancel在别的线程中终止另一个线程的执行,成功返回0 示例…

初识CSS层叠样式表

文章目录 CSS介绍CSS层叠样式表1.CSS组成2.CSS语法结构3.注释语法4.引入CSS的多种方式 CSS选择器1.CSS基础选择器2.CSS组成选择器3.分组与嵌套4.CSS属性选择器5.CSS伪类选择器6.CSS伪元素选择器 选择器优先级CSS继承选择器的优先级 CSS样式调节字体样式文本颜色文本属性 边框di…

在 Visual Studio 中远程调试 C++ 项目

目录 一、说明二、下载远程工具1. 官网下载2. 自己电脑上拷贝 三、 运行远程工具四、本机Visual Studio配置五、自动部署 一、说明 参考官方文档:https://learn.microsoft.com/zh-cn/visualstudio/debugger/remote-debugging-cpp?viewvs-2022 二、下载远程工具 …

数据库深入浅出,数据库介绍,SQL介绍,DDL、DML、DQL、TCL介绍

一、基础知识: 1.数据库基础知识 数据(Data):文本信息(字母、数字、符号等)、音频、视频、图片等; 数据库(DataBase):存储数据的仓库,本质文件,以文件的形式将数据保存到电脑磁盘中 数据库管理系统(DBMS)&…

clickhouse插入代替更新

1.使用ReplacingMergeTree引擎 CREATE TABLE xxx ( \ id_card String,\ session_id String,\ timestamp DateTime(Asia/Shanghai),\ realname String,\ phone_num String,\ email String ) \ ENGINE ReplacingMergeTree() \ PARTITION BY toY…

【小工具】WebClient远程调用,返回值将Long类型转换为String,自定义注解

文章目录 1. 使用WebClient使用远程调用2. 返回值将Long类型转换为String3. 自定义注解 1. 使用WebClient使用远程调用 <!-- SpringBoot webflux --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

腾讯云轻量应用服务器的“镜像”操作系统选择方法

腾讯云轻量应用服务器镜像怎么选择&#xff1f;如果是用来搭建网站可以选择宝塔Linux面板腾讯云专享版&#xff0c;镜像系统根据实际使用来选择&#xff0c;腾讯云百科txybk.com来详细说下腾讯云轻量应用服务器镜像的选择方法&#xff1a; 腾讯云轻量应用服务器镜像选择 轻量…

BI零售数据分析,告别拖延症,及时掌握一线信息

在日常的零售数据分析中&#xff0c;经常会因为数据量太大&#xff0c;分析指标太多且计算组合多变而导致数据分析报表难产&#xff0c;零售运营决策被迫拖延症。随着BI数据可视化分析技术的发展&#xff0c;智能化、可视化、自助分析的BI数据分析逐渐成熟&#xff0c;形成一套…

嵌入式软件工程师面试题——2025校招社招通用(六)

说明&#xff1a; 面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但在这里博主希望每一个题目&#xff0c;大家都要…

2、NLP文本预处理技术:词干提取和词形还原

一、说明 在上一篇文章中&#xff0c;我们解释了文本预处理的重要性&#xff0c;并解释了一些文本预处理技术。在本文中&#xff0c;我们将介绍词干提取和词形还原主题。 词干提取和词形还原是两种文本预处理技术&#xff0c;用于将单词还原为其基本形式或词根形式。这些技术的…

第03章_基本的SELECT语句

第03章_基本的SELECT语句 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年&#xff0c;世界上第一台电脑诞生&#xff0c;如今&#xff0c;借由这台电脑发展…

云计算是什么

一文读懂云计算&#xff1a;发展历程、概念技术与现状分析 - 知乎 “现阶段所说的云计算&#xff0c;已经不单单是一种分布式计算&#xff0c;而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果。” 云计算的关键…

oracle 重启步骤及踩坑经验

oracle 重启步骤及踩坑经验 标准重启步骤 切换到oracle用户 su - oracle关闭监听 lsnrctl stop杀掉oracle有关进程 ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {print $2}|xargs kill -9#查询pid ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {p…

恒驰服务 | 华为云数据使能专家服务offering之数仓建设

恒驰大数据服务主要针对客户在进行智能数据迁移的过程中&#xff0c;存在业务停机、数据丢失、迁移周期紧张、运维成本高等问题&#xff0c;通过为客户提供迁移调研、方案设计、迁移实施、迁移验收等服务内容&#xff0c;支撑客户实现快速稳定上云&#xff0c;有效降低时间成本…

上海中优城市万豪酒店推出全新国际IP童趣主题房,独特住宿体验中国首秀

2023年10月30日&#xff0c;中国上海 – 近日&#xff0c;上海中优城市万豪酒店正式推出由全球品牌娱乐公司孩之宝官方授权打造的小马宝莉和变形金刚主题客房&#xff0c;以创意客房、新奇体验和丰富礼遇&#xff0c;为童游家庭或年轻的动漫迷们开启沉浸式入住之旅&#xff0c;…

Latex报错 “Paragraph ended before \Gin@iii was complete“

大家看看自己的模版的前面 加载的包 里面是不是有个 \usepackage{graphics} 问题就在这里&#xff0c;我们需要把它改成\usepackage{graphicx}