如何实现surging 多语言混合微服务异构
1. 背景
作为微服务体系, 应该是不限语言的, 不管是.net、java, 都可以是一个微服务. 可以使用JAVA或者.NET 去实现业务模块,通过统一的消息模型进行传输调用
因客户技术栈以多语言,多元化发展,语言包含了Java、.NET语言,并且要支持不同业务场景需要,所以surging必然要实现多语言混合微服务异构,并且支持多协议扩展以便支持不同业务场景,那么将通过几篇文章来介绍surging 如何实现JAVA微服务以便支持多语言混合。
组件
目前JAVA微服务引擎实现了以下组件:
skywalking探针:以便支持.net和java 链路追踪
rpc组件:基于netty远程调用组件
Messagepack组件:以便支持.net和java基于messagepack 编解码
Json组件:以便支持.net和java基于json编解码,JAVA使用的是gson, .net使用的是Newtonsoft.Json
注册中心组件:实现基于zookeeper,consul 的注册中心,可以支持兼容.net和java服务注册、服务发现、服务治理。
服务引擎构建组件:以便实现服务配置,组件注入。
使用入门
基于java写个简单的服务接口
@ServiceBundle(RouteTemplate = "api/{Service}")
public interface IHelloService extends IServiceKey {
@Command(CircuitBreakerForceOpen = false,ShuntStrategy = AddressSelectorMode.RoundRobin, Strategy = StrategyType.Failover, RequestCacheEnabled = false, InjectionNamespaces = {}, BreakerForceClosed = false, FallBackName = "")
String Say(String name) throws IOException, InterruptedException, KeeperException;
}
基于java写个 简单的服务实现
1 public class HelloService extends ServiceBase implements IHelloService {
2
3 @Inject
4 private IServiceProxyProvider serviceProxyProvider;
5
6 public String Say(String name) throws IOException, InterruptedException, KeeperException {
7
8 HashMap<String, Object> model = new HashMap<>();
9 model.put("name", "fanly");
10 String path = "api/manager/say";
11
12 String result = serviceProxyProvider.Invoke(model, path, null);
13 return result;
14 // return name+":say hello";
15 }
16 }
C# 通过以下代码就能调用以上JAVA服务
1 Dictionary<string, object> model = new Dictionary<string, object>();
2 model.Add("name", name);
3 string path = "api/hello/say";
4
5 string result =await _serviceProxyProvider.Invoke<string>(model, path, null);
以下通过swagger 调用JAVA服务返回的结果



SkyWalking链路追踪:




总结
surging 将继续为企业服务,后期会支持升级支持skywalking8.0+和支持扩展haproxy, rtmp 多媒体推送服务。
如何实现surging 多语言混合微服务异构的更多相关文章
- 谈谈surging 与多语言混合微服务构思
1.前言 微服务架构已成为目前互联网架构的趋势,关于微服务的讨论,几乎是各大技术论坛.技术大会的热门话题.而Surging是高性能的模块化微服务引擎,是大家首选微服务引擎架构之一,而针对于框架有个突出 ...
- surging 微服务引擎 2.0 会有多少惊喜?
surging 微服务引擎从2017年6月至今已经有两年的时间,这两年时间有多家公司使用surging 服务引擎,并且有公司搭建了CI/CD,并且使用了k8s 集群,这里我可以说下几家公司的服务搭建情 ...
- 基于.NET CORE微服务框架 -浅析如何使用surging
1.前言 surging受到大家这么强烈的关注,我感到非常意外,比如有同僚在公司的分享会上分享surging, 还有在博客拿其它的RPC框架,微服务做对比等等,这些举动都让我感觉压力很大,毕竟作为个人 ...
- 从成本角度看Java微服务
近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务.IBM也于近日开源了轻量级Java微服务应用服务器 Open Liberty .但是采用 ...
- Chris Richardson微服务翻译:构建微服务之微服务架构的进程通讯
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...
- 基于 Docker 的微服务架构实践
本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...
- 深入理解SpringCloud与微服务构建
旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81742534 目录 一.SpringClou ...
- springcloud微服务 总结一
一 什么是微服务 译文: 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机 ...
- Re:从0开始的微服务架构:(一)重识微服务架构--转
原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_ ...
- 【CHRIS RICHARDSON 微服务系列】微服务架构中的进程间通信-3
编者的话 |本文来自 Nginx 官方博客,是微服务系列文章的第三篇,在第一篇文章中介绍了微服务架构模式,与单体模式进行了比较,并且讨论了使用微服务架构的优缺点.第二篇描述了采用微服务架构的应用客户端 ...
随机推荐
- AXI4的PL与PS联合设计
AXI4的PL与PS联合设计 1.实验原理 在前面的学习中,解决了如何利用一个缓冲寄存器控制另外一个寄存器的输入输出配置.接下来就是如何将PL设计直接导入到PS中实现资源互换.PS是可以通过AXI4总 ...
- 京东一面挂在了CAS算法的三大问题上,痛定思痛不做同一个知识点的小丑
写在开头 在介绍synchronized关键字时,我们提到了锁升级时所用到的CAS算法,那么今天我们就来好好学一学这个CAS算法. CAS算法对build哥来说,可谓是刻骨铭心,记得是研二去找实习的时 ...
- idea创建一个干净的SpringMVC项目
一.创建普通的maven项目 二.右键添加web支持 三.pom.xml配置maven环境 1 <!--导入依赖--> 2 <dependencies> 3 <depen ...
- C++设计模式 - 代理模式(Proxy)
接口隔离模式 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案. 典型模式 Facade P ...
- 浅看BCEL字节码
什么是BCEL BCEL是位于sun包下的一个项目,是属于Apache Common的一个子项目 BCEL-LoadClass分析 demo package org.example; import c ...
- 解决 `remote: You must use a personal access token with 'api' scope for Git over HTTP.`
背景 在家远程办公的时候 git clone 报错: remote: HTTP Basic: Access denied remote: You must use a personal access ...
- java中的内部类内部接口详解
目录 简介 内部类 静态内部类 非静态内部类 静态方法内部类 非静态方法的内部类 匿名类 内部接口 总结 简介 一般来说,我们创建类和接口的时候都是一个类一个文件,一个接口一个文件,但有时候为了方便或 ...
- Git分支教程:详解分支创建、合并、删除等操作
Git是一种强大的分布式版本控制系统,它的分支功能使得团队协作和代码管理变得更加灵活和高效.分支可以让开发人员在不影响主线开发的情况下进行并行开发和实验性工作.本篇博客将详解Git分支的创建.合并.删 ...
- HDD成都站·暨HMS Core 6.0产品交流会报名开启
HUAWEI Developer Day(以下简称HDD)如期而至,将在9月10日和盟友们相聚成都,开启一场属于开发者的交流盛会.本次沙龙活动由上.下半场组成,诚挚地邀请各位开发者参加. 精彩预告 0 ...
- HarmonyOS振动效果开发指导
Vibrator开发概述 振动器模块服务最大化开放硬工最新马达器件能力,通过拓展原生马达服务实现振动与交互融合设计,打造细腻精致的一体化振动体验和差异化体验,提升用户交互效率和易用性.提升用户体验 ...