作为微服务体系, 应该是不限语言的, 不管是.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; }