国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

分享自己做的一個JAVA RPC 框架 longio

bergwhite / 1436人閱讀

摘要:是一個支持同步和異步調(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-spring

longio-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> 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);


}
負(fù)載均衡

暫時支持權(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

相關(guān)文章

  • 明星分分合合的洪荒點擊量,微博Mesh服務(wù)化改造如何支撐?(附PPT下載)

    摘要:為了解決這一系列問題,微博從年開發(fā)了語言的框架,并基于此完成了服務(wù)化改造。這些經(jīng)歷之下微博也積累了一套服務(wù)治理型的服務(wù)化體系。的版,所要解決的是微博平臺內(nèi)部服務(wù)之間的調(diào)用,因此協(xié)議時,其實并沒有考慮到跨語言的問題,用的是對比較友好的。 showImg(https://segmentfault.com/img/remote/1460000012601596?w=1080&h=606); ...

    ShowerSun 評論0 收藏0
  • Dubbo開源現(xiàn)狀與未來規(guī)劃

    摘要:今天的話題是與的開源現(xiàn)狀和未來規(guī)劃,我們知道,過去一段時間疏于維護(hù),去年阿里高調(diào)宣布重啟開源之后,社區(qū)里問的最多的問題是,這次開源與上次有什么一樣,還有就是和是什么關(guān)系希望通過這次的分享能夠解答這些問題。 摘要: Dubbo 在過去一段時間疏于維護(hù),去年阿里高調(diào)宣布重啟 Dubbo 開源之后,社區(qū)里問的最多的問題是,這次開源與上次有什么一樣,還有就是 Dubbo 和 Spring Bo...

    zhoutao 評論0 收藏0
  • 后端必備——數(shù)據(jù)通信知識(RPC、消息隊列)一站式總結(jié)

    摘要:具體可以參考消息隊列之具體可以參考實戰(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...

    Kahn 評論0 收藏0
  • RPC框架原理及從零實現(xiàn)系列博客(一):思路篇

    摘要:等之所以支持跨語言,是因為他們自己定義了一套結(jié)構(gòu)化數(shù)據(jù)存儲格式,如的,用于編解碼對象,作為各個語言通信的中間協(xié)議。 前段時間覺得自己一直用別人的框架,站在巨人的肩膀上,也該自己造造輪子了 一時興起 就著手寫起了RPC框架 這里寫了系列博客拿給大家分享下 這篇是開篇的思路篇 項目最終的代碼放在了我的github上https://github.com/wephone/Me... 歡迎sta...

    tracy 評論0 收藏0
  • 分布式服務(wù)框架之遠(yuǎn)程通訊技術(shù)及原理分析

    摘要:微軟的雖然引入了事件機(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)系呢,它們背后到底是基...

    sorra 評論0 收藏0

發(fā)表評論

0條評論

bergwhite

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<