摘要:是一個支持同步和異步調(diào)用,并且支持客戶端負(fù)載均衡,服務(wù)發(fā)現(xiàn)的框架,底層基于傳輸層支持和原始序列化層支持,支持服務(wù)端推送消息和客戶端對推送消息的路由功能。將集成到可以基于注解對框架進(jìn)行配置更方便,更。
longio
longio 是一個支持同步和異步調(diào)用,并且支持客戶端負(fù)載均衡,服務(wù)發(fā)現(xiàn)的RPC框架,底層基于netty,傳輸層支持websocket,http和原始socket,序列化層支持JSON,MessagePack,protobuf,支持服務(wù)端推送消息和客戶端對推送消息的路由功能。
longio-springlongio-spring 將longio集成到spring-boot可以基于注解對rpc框架進(jìn)行配置更方便,更easy。
RPC配置@Bean(name="cmdLookup") CmdLookup getCmdLookup() { return new DefaultCmdLookup(); } @Bean(name="appLookup") AppLookup getAppLookup(@Qualifier("environment") Environment env) { return new DefaultAppLookup(new EnvProperties(env)); } @Bean BeanFactoryPostProcessor getLioBeanBeanFactoryPostProcessor( @Qualifier("appLookup") AppLookup appLookup, @Qualifier("cmdLookup")CmdLookup cmdLookup) { return new LongioBeanFactoryPostProcessor(appLookup, cmdLookup); } @Boot(port = 5000, pt = ProtocolType.JSONARRAY, tt = TransportType.HTTP) @Boot(port = 5002, pt = ProtocolType.JSON, tt = TransportType.HTTP) @Boot(port = 5001, pt = ProtocolType.MESSAGE_PACK, tt = TransportType.SOCKET) @Bean(name = "longio.bootstrap") public LioBootstrap getLioBootstrap() { return new LioBootstrap(); }Server端
@Lservice(path = "com.lehuihome") public class TestService { @Lio(cmd = "getUser") @Unpack("com.zhucode.longio.example.message.UserMsg") public Map客戶端>getUser(@Key("user_id")long userId) { System.out.println("++++++++++++++++++++++++++++++++++++++"); JSONObject ret = new JSONObject(); ret.put("status", "success"); Map rm = new HashMap<>(); UserMsg um = new UserMsg(); um.user_id = 9999; rm.put("1234", um); Map > m = new HashMap<>(); m.put("1234", rm); return m; //return new String[]{"status", "true", "ffffdd"}; } @Lio(cmd = "getUser1") @Unpack("com.zhucode.longio.example.message.User$Data") public Res.Data getUser1(@Key("user_id")long userId) { System.out.println("++++++++++++++++++++++++++++++++++++++"); return Res.Data.newBuilder().setStatus("success").build(); } @Lio(cmd = "getVoid") public void testVoid() { System.out.println("++++++++++++test void+++++++++++++++"); } @Lio(cmd = "getInt") public int testInt() { System.out.println("++++++++++++test int+++++++++++++++"); return 98800; } @Lio(cmd = "getString") public String testString() { System.out.println("++++++++++++test string+++++++++++++++"); return "ffffdffffdffffdfvvvv"; } @Lio(cmd = "compute_add") public int add(int a, int b) { System.out.println("++++++++++++test add+++++++++++++++"); return a+b; } }
@LsAutowired(app = "com.lehuihome", path = "com.lehuihome", tt=TransportType.SOCKET, ip="127.0.0.1", port=9001, pt=ProtocolType.MESSAGE_PACK) public interface ClientService { @Lio(cmd = "getUser") @Pack("com.zhucode.longio.example.message.UserMsg") public Map負(fù)載均衡> getUser(@Key("user_id")int userId); @Lio(cmd = "getVoid") public void testVoid(); @Lio(cmd = "getInt") public int testInt(); @Lio(cmd = "getString") public String testString(); @Lio(cmd = "add") public int add(int a, int b); @Lio(cmd = "add") public void asynAdd(int a, int b, MessageCallback callback); }
暫時支持權(quán)重輪詢和權(quán)重隨機(jī)
@LsAutowired(app = "com.lehuihome", lb=LoadBalance.Roll, ...)源碼地址
https://github.com/zhujinxian/longio
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65524.html
摘要:為了解決這一系列問題,微博從年開發(fā)了語言的框架,并基于此完成了服務(wù)化改造。這些經(jīng)歷之下微博也積累了一套服務(wù)治理型的服務(wù)化體系。的版,所要解決的是微博平臺內(nèi)部服務(wù)之間的調(diào)用,因此協(xié)議時,其實并沒有考慮到跨語言的問題,用的是對比較友好的。 showImg(https://segmentfault.com/img/remote/1460000012601596?w=1080&h=606); ...
摘要:今天的話題是與的開源現(xiàn)狀和未來規(guī)劃,我們知道,過去一段時間疏于維護(hù),去年阿里高調(diào)宣布重啟開源之后,社區(qū)里問的最多的問題是,這次開源與上次有什么一樣,還有就是和是什么關(guān)系希望通過這次的分享能夠解答這些問題。 摘要: Dubbo 在過去一段時間疏于維護(hù),去年阿里高調(diào)宣布重啟 Dubbo 開源之后,社區(qū)里問的最多的問題是,這次開源與上次有什么一樣,還有就是 Dubbo 和 Spring Bo...
摘要:具體可以參考消息隊列之具體可以參考實戰(zhàn)之快速入門十分鐘入門阿里中間件團(tuán)隊博客是一個分布式的可分區(qū)的可復(fù)制的基于發(fā)布訂閱的消息系統(tǒng)主要用于大數(shù)據(jù)領(lǐng)域當(dāng)然在分布式系統(tǒng)中也有應(yīng)用。目前市面上流行的消息隊列就是阿里借鑒的原理用開發(fā)而得。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識點以及面試問題,目前已經(jīng)開源,會一直完善下去,歡迎建議和指導(dǎo)歡迎Star: https://github.com/Snail...
摘要:等之所以支持跨語言,是因為他們自己定義了一套結(jié)構(gòu)化數(shù)據(jù)存儲格式,如的,用于編解碼對象,作為各個語言通信的中間協(xié)議。 前段時間覺得自己一直用別人的框架,站在巨人的肩膀上,也該自己造造輪子了 一時興起 就著手寫起了RPC框架 這里寫了系列博客拿給大家分享下 這篇是開篇的思路篇 項目最終的代碼放在了我的github上https://github.com/wephone/Me... 歡迎sta...
摘要:微軟的雖然引入了事件機(jī)制,可以在隊列收到消息時觸發(fā)事件,通知訂閱者。由微軟作為主要貢獻(xiàn)者的,則對以及做了進(jìn)一層包裝,并能夠很好地實現(xiàn)這一模式。 在分布式服務(wù)框架中,一個最基礎(chǔ)的問題就是遠(yuǎn)程服務(wù)是怎么通訊的,在Java領(lǐng)域中有很多可實現(xiàn)遠(yuǎn)程通訊的技術(shù),例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關(guān)系呢,它們背后到底是基...
閱讀 3583·2023-04-26 02:10
閱讀 1349·2021-11-22 15:25
閱讀 1687·2021-09-22 10:02
閱讀 924·2021-09-06 15:02
閱讀 3484·2019-08-30 15:55
閱讀 616·2019-08-30 13:58
閱讀 2792·2019-08-30 12:53
閱讀 3072·2019-08-29 12:38