浅谈surging服务引擎中的rabbitmq组件和容器化部署

1、前言

上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎,而这篇将介绍浅谈surging服务引擎中的rabbitmq组件和容器化部署

surging源码下载

2、Sidecar模式

  比如现在比较火的Service Mesh, 谈到Service Mesh,就不得不了解下Sidecar模式,Sidecar设计模式被越来越多的关注和采用,此模式之所以称作Sidecar,是因为它类似于三轮摩托车上的挎斗。 在此模式中,挎斗附加到应用程序中,为应用程序提供支持性功能。挎斗与应用程序具有相同的生命周期:与应用程序一起创建,一起停用。 挎斗模式有时也称为搭档模式,这是一种分解模式。而surging 采用了Sidecar模式用来附加组件,而使用Sidecar模式有以下功能

  •     共享存储空间

      引擎组件部署到共享的文件目录里,服务引擎从共享的文件目录扫描引擎组件文件。

  •    共享组件和业务的配置文件

        针对于组件的配置文件部署到共享的文件目录里,服务引擎从共享的文件目录加载文件。

  •   独立的业务服务

        针对于业务可以把依赖的组件打包部署到共享的文件目录里,服务引擎从共享的文件目录扫描加载,从而部署成独立的业务服务

  •    内置多种协议

        针对于独立部署的业务服务,内置了多种协议,提供给服务和外部程序进行调用

      模式特点

  • 隔离:让组件都能够关注核心问题。比如eventbus、Logger、 netty 在实现功能的同时无需关注其它组件的实现而发生的冲突;

  • 单一责任原则:每个组件都应该职责分开,而根据这一原则,职责应该是对应一个类、模块或者接口,从而能够独立进行处理。

  • 内聚性/可重用性:针对组件的特性,方法可以进行重用,从而满足组件可持续扩展。

3、基于Event Bus 的Rabbitmq组件

       surging服务引擎扩展了基于eventbus 的rabbitmq ,组件可以选择绑定 Normal,Retry(Dead letter),Fail ,如下图所示。

       而针对于该组件有哪些应用场景呢?

  • 商品秒杀和抢购

        抢购/秒杀是如今很常见的一个应用场景,在高并发的流量访问下可以将用户放入到抢购队列中,购买成功则销毁消息。

  • 最终数据的一致性

       在大型业务中,系统一般由多个独立的服务组成,在分布式调用时候把消息放入到rabbitmq 队列中,再通过消息的幂等性来解决数据的最终一致性

  •  订单失效处理

       在购买商品/服务生成订单业务中,会设定支付时间,如果一直未支付,会直接关闭订单,而这个场景可以通过死信队列的来解决

 640?wx_fmt=png

示例代码

可以通过继承BaseIntegrationEventHandler或者IIntegrationEventHandler,再通过QueueConsumer特性进行标识,具体代码如下

640?wx_fmt=png

 可以通过以下选项去更改配置

640?wx_fmt=png

生成绑定的队列如下图

640?wx_fmt=png

通过rabbitmq管理工具,可以通过properties来查看重试次数count 等一些信息,如下图所示

640?wx_fmt=png

 

4、如何部署

surging 服务引擎构建镜像部署在docker中,可以按照业务需求自定义化引擎,也可以从 docker hub中pull镜像,可以按照如下流程从docker hub 拉取部署镜像

如何pull镜像

可以通过命令:

docker pull serviceengine/surging 

可以指定具体的tag来拉取,比如需要拉取v0.9.0.2,执行以下命令

docker pull serviceengine/surging:v0.9.0.2 

如何配置

1.镜像可以用环境变量设置相关参数,而通过以下的默认配置文件知晓如何通过环境变量配置参数,配置的规则:${环境变量名}|默认值

640?wx_fmt=png

2.可以通过设置环境变量surgingpath和cachepath来指定自定义文件配置,比如,挂载/home/fanly 目录,通过以下命令参数 -v /home/fanly:/home/fanly 来设定,再通过设置以下命令参数用来设定自定义文件配置

--env surgingpath=/home/fanly/configs/surgingSettings.json--env cachepath=/home/fanly/configs/cacheSettings.json 

如何启动内置引擎组件

引擎可以加载多个同一类型的引擎组件,可以通过以下配置启用哪一种引擎组件,如果是自定义的服务引擎,不需要配置以下配置,只需要按照需求引用组件

640?wx_fmt=png

如何启动引擎

比如 pull 的镜像是serviceengine/surging:v0.9.0.2 ,可以按照以下命令进行启动

docker run --name surging --env surgingpath=/home/fanly/configs/surgingSettings.json  --env cachepath=/home/fanly/configs/cacheSettings.json -v /home/fanly:/home/fanly  serviceengine/surging:v0.9.0.2  

 7.总结

如有问题请到这里提问 ,可以加入surging互相交流QQ群:542283494,引擎组件扩展沟通群:615562965

原文地址: https://www.cnblogs.com/fanliang11/p/9543267.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

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

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

相关文章

csp-j/s总结

文章目录csp-jcsp-s总结csp-j T1傻逼题(我是傻逼),手残把&打成整除了(大样例还对了gg) T2乱推,然后打了个O(n)O(n)O(n),却WA了15分? T3看了看,修改不会相互影响?那不…

51nod1220-约数之和【莫比乌斯反演,杜教筛】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1220 题目大意 给出nnn,求∑i1n∑j1nσ(i∗j)\sum_{i1}^n\sum_{j1}^n\sigma(i*j)i1∑n​j1∑n​σ(i∗j) 其中σ\sigmaσ表示约数和。 解题思路 首先有结论σ(i∗j)∑x∣i∑y∣j[gcd(x,y)1]…

CDQ分治与整体二分

首先说明,CDQ分治与整体二分都是离线算法 CDQ分治: 流程: 1.我们要解决一系列问题,这些问题一般包含修改和查询操作,可以把这些问题排成一个序列,用一个区间[L,R]表示。 2.分。递归处理左边区间[L,M]和…

博弈论讲解(二)

文章目录斐波那契博弈问题:结论证明:尼姆博奕(Nimm Game)问题:结论:证明:代码:公平组合博弈(Impartial Combinatori Games)理论知识(1)、若面临末状态者为获胜…

.net core实践系列之短信服务-架构设计

前言上篇《.net core实践系列之短信服务-为什么选择.net core(开篇)》简单的介绍了(水了一篇).net core。这次针对短信服务的架构设计和技术栈的简析。源码地址:https://github.com/SkyChenSky/Sikiro.SMS为什么需要架…

【矩阵乘法】Matrix Power Series(poj 3233)

Matrix Power Series poj 3233 题目大意 给你一个矩阵A&#xff0c;让你求SAA2A3…AkS A A^2 A^3 … A^kSAA2A3…Ak 输入样例 2 2 4 0 1 1 1输出样例 1 2 2 3n⩽30,k⩽109,m<104,a∈A,a⩽32768n \leqslant 30,k \leqslant 10^9,m < 10^4,a\in A,a \leqslant32…

P3702-[SDOI2017]序列计数【矩阵乘法】

正题 题目链接:https://www.luogu.com.cn/problem/P3702 题目大意 nnn个不超过mmm的正整数&#xff0c;要求和是ppp的倍数且至少有一个质数。 解题思路 用总方案数减去只有非质数的方案数即可。 线性筛出所有质数&#xff0c;然后矩阵乘法转移即可。 时间复杂度O(mp3log⁡n…

字符串hash(一)

很久没遇到过hash的题了&#xff0c;今天来重新温故一下 文章目录序言常用的几个字符串hash方法&#xff1a;hash公式&#xff08;自然溢出&#xff09;讲解模板单hash讲解模板双hash讲解代码总结序言 你有没有想过&#xff0c;字符串存储一大溜&#xff0c;比较时又麻烦又折腾…

CAP 2.3版本发布,支持 MongoDB

前言经过2个月的调整及测试&#xff0c;CAP 2.3 版本终于发布了&#xff0c;这个版本最大的特性就是对于 MongoDB 的支持&#xff0c;感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR&#xff0c;相信随着博客园的使用&#xff0c;CAP 会越来越多的帮助到更多的人。CAP …

【矩阵乘法】递推(ssl 1532)

递推 ssl 1532 题目大意 给出数列a0,a1…ana_0,a_1…a_na0​,a1​…an​和fff的前n−1n-1n−1项f0,f1…fn−1f_0,f_1…f_{n-1}f0​,f1​…fn−1​ fia0∗fi−na1∗fi−(n−1)...an−1∗fi−1anf_ia_0*f_{i-n}a_1*f_{i-(n-1)}...a_{n-1}*f_{i-1}a_nfi​a0​∗fi−n​a1​∗fi…

P3185-[HNOI2007]分裂游戏【SG函数】

正题 题目链接:https://www.luogu.com.cn/problem/P3185 题目大意 nnn个瓶子&#xff0c;开始第iii个里有pip_ipi​个糖果&#xff0c;操作的人可以找到一个三元组(i,j,k)i<j≤k(i,j,k)\ i<j\leq k(i,j,k) i<j≤k然后取出iii中的一个糖果&#xff0c;在j,kj,kj,k中各…

牛客网 【每日一题】5月9日 过河

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 在河上有一座独木桥&#xff0c;一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子&#xff0…

.NETCore 实现容器化Docker与私有镜像仓库管理

一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的&#xff0c;其提供了操作系统级别的抽象&#xff0c;是一种容器管理技术&#xff0c;它隔离了应用程序对基础架构&#xff08;操作系统等&#xff09;的依赖。相较于虚拟机而言&#xff0c;Docker共享的是…

【矩阵乘法】幼儿园数学题I(ssl 2513)

幼儿园数学题I ssl 2513 题目大意 定义fn(512)n−1f_n\left ( \frac{\sqrt{5}1}{2}\right )^{n-1}fn​(25​1​)n−1&#xff0c;求前n项的和,&#xff08;对109710^971097取模&#xff09;&#xff08;题目貌似出了些问题&#xff0c;实际上fff等价于斐波那契数列&#xff…

P4492-[HAOI2018]苹果树【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4492 题目大意 开始有一个节点&#xff0c;第iii次在一个儿子不超过222的节点下面长出一个新儿子编号为iii。求所有方案下树的路径长度和。 解题思路 考虑计算每条边的贡献&#xff0c;设gig_igi​表示大小为iii的树的形态…

字符串hash(二)

从上一届已经讲了字符串hash的方法&#xff0c;hash后怎么用也很重要 文章目录一.查询子串的hash值查询子串减去期中一个字符后的hash值查询两个子串拼接的hash值**hash的模板&#xff08;自然溢出&#xff09;**char s[10010]; ull hashs(char s[]) {int lenstrlen(s);ull bas…

记一次.net core 集成vue 实践

简介以前我们总是喜欢用服务端渲染前端&#xff08;虽然也有htmlajax这种做法&#xff09;&#xff0c;后来node诞生了&#xff0c;前端工具链&#xff08;不如说生态&#xff09;诞生了&#xff0c;大家都开始了前端的重构之路&#xff0c;本文将以一简单案例介绍下我们是如何…

【矩阵乘法】幼儿园数学题II(ssl 2514)

幼儿园数学题II ssl 2514 题目大意 给出式子 f(1)1,f(2)1f(1)1,f(2)1f(1)1,f(2)1 f(n)−f(3)−f(4)−f(5)−...−f(n−3)−f(n−2)(n4)(n−1)/2f(n)-f(3)-f(4)-f(5)-...-f(n-3)-f(n-2)(n4)(n-1)/2f(n)−f(3)−f(4)−f(5)−...−f(n−3)−f(n−2)(n4)(n−1)/2 让你求前n项的和…

P3705-[SDOI2017]新生舞会【0/1分数规划,费用流】

正题 题目链接:https://www.luogu.com.cn/problem/P3705 题目大意 nnn对人&#xff0c;给出两个n∗nn*nn∗n的矩形a,ba,ba,b。求一个nnn配对满足∑i1naxi,yi∑i1nbxi,yi\frac{\sum_{i1}^na_{x_i,y_i}}{\sum_{i1}^nb_{x_i,y_i}}∑i1n​bxi​,yi​​∑i1n​axi​,yi​​​最大。…

最短路径

SPFA (Bellman-Ford 的队列优化版本)&#xff1a; 1、求单源最短路径&#xff0c;即每个点到源点的最短距离 2、可以处理负权边的情况 3、可以判断是否出现负权回路 #include<iostream> #include<vector> #include<cstring> #include<queue> using…