随笔分类 -  JMS

摘要:虽然,我们通常建议涉及到事务的情况下,不要在一个微服务里,调用另外一个微服务,但有时也会遇到无法避开的情况,那我们就来看看应该如何保证事务的一致性。 我们先来看看微服务A调用微服务B的伪代码: //微服务A使用的数据库对象是 DbContextA using var db = new DbConte 阅读全文
posted @ 2023-01-07 09:56 IWing 阅读(1384) 评论(0) 推荐(0) 编辑
摘要:JMS的微服务有两种载体,一种是控制台程序,一种是webapi程序。 在webapi程序里,增加websocket相信大家都会,这里就不讲了。如何把webapi变成JMS的微服务,可以看一下这个视频: https://www.bilibili.com/video/BV1at4y1u75J/ 那么标准 阅读全文
posted @ 2022-12-26 09:43 IWing 阅读(223) 评论(0) 推荐(0) 编辑
摘要:大家使用JMS的过程中,可能会留意到,不管是微服务在注册时,还是RemoteClient构造时,所指向的网关都是一个NetAddress数组,之所以网关地址是多个,而不是一个,那是因为网关是一个双击热备的集群模式。 要让两个网关形成集群,非常简单,把它配置文件里面的注释解开就行 "Cluster": 阅读全文
posted @ 2022-12-20 20:04 IWing 阅读(100) 评论(0) 推荐(0) 编辑
摘要:有很多时候,我们所编写的微服务是可以被客户端单个调用的,也就是说,要完成某一项业务,只要调用某一个微服务的其中一个方法就可以了,并不需要同时调用多个微服务。 举个例子: 在微服务,我们写了这样一个方法: public Company[] GetUserCompanies(int userid) // 阅读全文
posted @ 2022-03-29 11:49 IWing 阅读(136) 评论(0) 推荐(0) 编辑
摘要:用JMS编写的微服务,由调用端决定了各个微服务执行时,是否需要保持事务的一致性。 也就是RemoteClient在调用微服务方法前,先调用BeginTransaction明确后面所调用的微服务需要保持事务一致性。 微服务的底层执行流程如下: 1、调用端标识此次业务需要微服务支持分布式事务 2、调用端 阅读全文
posted @ 2022-03-22 12:39 IWing 阅读(153) 评论(0) 推荐(0) 编辑
摘要:gRPC性能测试(.net 5) 创建一个最简单的gRPC服务,服务器代码如下: using Grpc.Core; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using Sy 阅读全文
posted @ 2021-05-17 18:16 IWing 阅读(184) 评论(0) 推荐(0) 编辑
摘要:链接:https://cccscls-my.sharepoint.com/personal/jack_mutc_ca/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fjack%5Fmutc%5Fca%2FDocuments%2FJMS&ga=1 如果在线的微服务 阅读全文
posted @ 2020-12-09 17:14 IWing 阅读(406) 评论(0) 推荐(0) 编辑
摘要:虽然,默认情况下,多个相同的微服务,网关是自动根据微服务的压力情况,把用户请求分配到压力较轻的微服务器上。 但是,在某些业务情景下,我们可能希望人为去控制微服务的请求分配。 举个例子,我在北京、上海、广州等城市,都部署了一个相同的微服务,我希望北京的用户访问北京的微服务器,上海的访问上海的微服务器。 阅读全文
posted @ 2020-12-03 15:12 IWing 阅读(292) 评论(0) 推荐(0) 编辑
摘要:双机热备,指两个一模一样的微服务,两个同时在运行,但是只有一个在工作,当工作中的微服务垮掉后,另一个会自行补上。 要实现这个,只需要设置 SingletonService = true。 var microServiceHost = new MicroServiceHost(services); m 阅读全文
posted @ 2020-12-03 13:55 IWing 阅读(262) 评论(0) 推荐(0) 编辑
摘要:项目模板下载地址 vs2022模板:JMS.MicroServiceProjectTemplate2022.zip vs2019模板:JMS.MicroServiceHost.zip 说明 把压缩包解压后,执行vsix文件,把模板安装到vs。 然后新建项目时,直接搜索jms模板,然后选择JMS.Mi 阅读全文
posted @ 2020-11-04 14:18 IWing 阅读(263) 评论(0) 推荐(0) 编辑
摘要:nuget 引入: Serilog.Extensions.LoggingSerilog.Settings.ConfigurationSerilog.Sinks.ConsoleSerilog.Sinks.File 初始化代码: var log = new LoggerConfiguration() . 阅读全文
posted @ 2020-08-11 12:04 IWing 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-08-07 09:21 IWing 阅读(210) 评论(0) 推荐(0) 编辑
摘要:JMS所有服务器程序,包括Gateway、GatewayReferee、Proxy、TokenServer、以及编写的微服务器,都支持使用第三方工具进行健康检查。 使用telnet 进行健康检查 向任意服务器,发送 FFFF 字符串,服务器会返回 ok。 (echo 'FFFF'; sleep 2) 阅读全文
posted @ 2020-07-31 15:51 IWing 阅读(333) 评论(0) 推荐(0) 编辑
摘要:默认情况下,如果在linux,需要关闭微服务进程,请务必使用 kill -15 进程id 命令,其他命令可能会直接关闭进程,造成数据丢失。 例如,有个后台任务,执行了一半,这时候进程突然关闭了,会形成一些无法预计的后果。 Kill -15 命令的安全性 默认情况下,当发出kill -15命令,JMS 阅读全文
posted @ 2020-07-31 15:20 IWing 阅读(367) 评论(0) 推荐(0) 编辑
摘要:用户token,也可以利用第三方框架生成,JMS也包含了自己的token服务器。 部署TokenServer 到这里下载 tokenserver.zip,然后部署运行TokenServer。 微服务中编写Login函数 引用 JMS.Token nuget包 代码如下: public class M 阅读全文
posted @ 2020-07-23 10:10 IWing 阅读(874) 评论(0) 推荐(0) 编辑
摘要:通常,多个相同的微服务器,它们的appsettings.json配置文件的内容都是一样的,如果,每次修改配置文件,都要逐个替换,那就太繁琐了,我们可以利用网关的文件共享功能,实现配置文件的统一更新。 网关打开文件共享 首先,在网关程序的当前目录下,新建一个文件夹shares 然后编辑网关的appse 阅读全文
posted @ 2020-07-23 10:08 IWing 阅读(636) 评论(0) 推荐(0) 编辑
摘要:分布式锁 在Controller当中,提供了分布式锁的功能,代码如下: class HelloworldController : MicroServiceControllerBase { static List<string> Users = new List<string>(); ILogger< 阅读全文
posted @ 2020-07-23 10:06 IWing 阅读(767) 评论(0) 推荐(3) 编辑
摘要:在上一篇,我们写了简单的Hello world微服务,现在,我们往这个微服务当中,加入一个支持分布式事务的函数,因为不想写太长的代码,我就不用数据库做演示了,只是简单给大家演示一下,怎么把事务的提交、回滚,放到一个委托当中。 using System; using System.Collection 阅读全文
posted @ 2020-07-23 09:59 IWing 阅读(1104) 评论(3) 推荐(1) 编辑
摘要:网关部署 1、在网关服务器上,安装.net 5.0运行环境; 2、到 https://www.cnblogs.com/IWings/p/13354541.html 下载Gateway.zip,解压到网关服务器 3、打开appsettings.json配置文件,修改里面的配置,我的配置如下所示: { 阅读全文
posted @ 2020-07-23 09:56 IWing 阅读(2019) 评论(0) 推荐(5) 编辑
摘要:微服务架构中,事务的统一性是一个重要的问题。程序员需要简洁有效地控制事务。JMSFramework 的诞生旨在提供更简单、更有效的事务控制方案。 先看一段客户端调用微服务的代码: using (var rc = new RemoteClient()) { //启动分布式事务 rc.BeginTran 阅读全文
posted @ 2020-07-23 09:54 IWing 阅读(7351) 评论(28) 推荐(37) 编辑