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 多语言混合微服务异构的更多相关文章

  1. 谈谈surging 与多语言混合微服务构思

    1.前言 微服务架构已成为目前互联网架构的趋势,关于微服务的讨论,几乎是各大技术论坛.技术大会的热门话题.而Surging是高性能的模块化微服务引擎,是大家首选微服务引擎架构之一,而针对于框架有个突出 ...

  2. surging 微服务引擎 2.0 会有多少惊喜?

    surging 微服务引擎从2017年6月至今已经有两年的时间,这两年时间有多家公司使用surging 服务引擎,并且有公司搭建了CI/CD,并且使用了k8s 集群,这里我可以说下几家公司的服务搭建情 ...

  3. 基于.NET CORE微服务框架 -浅析如何使用surging

    1.前言 surging受到大家这么强烈的关注,我感到非常意外,比如有同僚在公司的分享会上分享surging, 还有在博客拿其它的RPC框架,微服务做对比等等,这些举动都让我感觉压力很大,毕竟作为个人 ...

  4. 从成本角度看Java微服务

    近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务.IBM也于近日开源了轻量级Java微服务应用服务器 Open Liberty .但是采用 ...

  5. Chris Richardson微服务翻译:构建微服务之微服务架构的进程通讯

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...

  6. 基于 Docker 的微服务架构实践

    本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...

  7. 深入理解SpringCloud与微服务构建

    旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81742534 目录 一.SpringClou ...

  8. springcloud微服务 总结一

    一 什么是微服务 译文: 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机 ...

  9. Re:从0开始的微服务架构:(一)重识微服务架构--转

    原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_ ...

  10. 【CHRIS RICHARDSON 微服务系列】微服务架构中的进程间通信-3

    编者的话 |本文来自 Nginx 官方博客,是微服务系列文章的第三篇,在第一篇文章中介绍了微服务架构模式,与单体模式进行了比较,并且讨论了使用微服务架构的优缺点.第二篇描述了采用微服务架构的应用客户端 ...

随机推荐

  1. Python企业面试题1 —— 基础篇

    1. b.B.KB.MB.GB的关系? b ---- 位(bit) B ---- 字节(一个字节等于8位) 1 B = 8 bit 1 KB = 1024 B 1 MB = 1024 KB 1 GB ...

  2. FastWiki发布`0.2.4`支持js 函数

    FastWiki发布0.2.4支持js 函数 Release v0.2.4 · AIDotNet/fast-wiki (github.com) 支持JS动态functioncall调用 支持动态fun ...

  3. 你知道什么叫做API、SDK吗?

    链接:https://www.zhihu.com/question/21691705/answer/770586138 API.SDK是什么......... 讲个小故事: 研发人员A开发了软件A,研 ...

  4. DevEco Studio新特性分享-跨语言调试,让调试更便捷高效

     原文:https://mp.weixin.qq.com/s/JKVLQXu1z1zAoF5q49YEGg,点击链接查看更多技术内容.   HUAWEI DevEco Studio是开发Harmony ...

  5. 实验1 c语言开发环境使用和数据类型 运算符 表达式

    #include<stdio.h> #include<stdlib.h> int main() { printf(" O\n"); printf(" ...

  6. 重新整理数据结构与算法(c#)——算法套路迪杰斯特拉算法[三十一]

    前言 迪杰斯特拉算法 是求最短路径方法的其中一种,这个有什么作用呢? 有一张图: 假设求G点到其他各点的最小路径. 是这样来的. 比如找到了和G点相连接所有点,ABED.这时候确定GA是一定是最短的, ...

  7. 从LLaMA-Factory项目认识微调

    概述 什么是LLaMA-Factory? LLaMA-Factory是一个在github上开源的,专为大模型训练设计的平台.项目提供中文说明,可以参考官方文档:https://github.com/h ...

  8. EPLAN电气绘图笔记

    EPLAN的背景由来发展意义 使用软件的一些思维上规则的东西. 引入一些新的概念性名词术语及区分介绍. 如何完成项目式交付初级标准电气图纸. 如何高效简化. eplan安装后数据库问题. 6.安装后无 ...

  9. 浅析Golang map的实现原理

    Golang中的map底层使用的数据结构是hash table,基本原理就和基础的散列表一致,重点是Golang在设计中采用了分桶(Bucket),每个桶里面支持多个key-value元素的这种思路, ...

  10. 2024年GPLT团体程序设计比赛L2-D吉利矩阵题解

    只能说比赛时前期做得太慢了,后面导致题目只能捞点分数(IOI赛制),当时这道题是我不剪枝DFS拿了4分,压线拿铜牌! 考完试一做,发现是个大水题(bushi) 主要原理:DFS(深度优先搜索) + 剪 ...