<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          sumk移動(dòng)互聯(lián)網(wǎng)架構(gòu)神器

          聯(lián)合創(chuàng)作 · 2023-09-20 06:25

                 sumk是一款輕量級(jí)互聯(lián)網(wǎng)框架。擁有開(kāi)發(fā)速度快、性能好、易于橫向擴(kuò)展等特點(diǎn)。并且集成了一些互聯(lián)網(wǎng)中常見(jiàn)功能,sumk入門(mén)文檔點(diǎn)這里

          主要功能特點(diǎn)簡(jiǎn)單介紹如下:

          • 配置管理:sumk默認(rèn)的配置是app.properties,同時(shí)內(nèi)置了http、zookeeper兩種統(tǒng)一配置中心。所有這些配置,都支持熱變更,而不需要重啟應(yīng)用。并且提供了配置變更的通知機(jī)制。大多數(shù)配置都能兼容半角和全角符號(hào)。

          • 微服務(wù):服務(wù)注冊(cè)、自動(dòng)發(fā)現(xiàn)、故障轉(zhuǎn)移、負(fù)載均衡等常見(jiàn)功能這里也都提供,并且使用更簡(jiǎn)單。服務(wù)器端只要在方法上添加@Soa注解,就能被其它實(shí)例調(diào)用,并且它還能在調(diào)用鏈上自動(dòng)傳遞userId參數(shù)。客戶端提供了同步、異步兩種調(diào)用方式。

          • Web服務(wù):主要針對(duì)移動(dòng)端訪問(wèn)(PC端也可以使用),也可以用作微服務(wù)的網(wǎng)關(guān)。只要在方法上添加@Web注解就可以被html訪問(wèn),比spring mvc更方便(spring mvc還需要在參數(shù)上添加注解)。本模塊可以不使用tomcat,因?yàn)閟umk內(nèi)置了jetty服務(wù)器。還內(nèi)置了通信加密,參數(shù)的簽名驗(yàn)證等功能,可以在http模式下享受https的安全性

          • IOC:類似于spring的IOC功能,但擁有自己的特色。比如支持?jǐn)?shù)組、集合方式的注入

          • ORM:類似于Hibernate的ORM,支持分表。它的特點(diǎn)是可以結(jié)合redis做準(zhǔn)實(shí)時(shí)緩存,它跟hibernate二級(jí)緩存的顯著區(qū)別就在于準(zhǔn)實(shí)時(shí)。開(kāi)發(fā)人員在操作數(shù)據(jù)庫(kù)的時(shí)候,默認(rèn)情況下,他并不關(guān)心數(shù)據(jù)來(lái)自緩存還是數(shù)據(jù)庫(kù)。整個(gè)sumk框架,只有ORM功能有使用門(mén)檻。點(diǎn)這里看它的幫助文檔。

          • 事務(wù):支持讀寫(xiě)分離、權(quán)重、多數(shù)據(jù)源

          • 數(shù)據(jù)庫(kù)事件監(jiān)聽(tīng):通過(guò)ORM修改數(shù)據(jù)表的內(nèi)容,在事務(wù)提交后,可以獲取到它的通知。代碼示例在這里

          • mybatis支持:sumk有自己的sql執(zhí)行工具:RawUtil和NamedUtil。它們可以執(zhí)行sql文件中的sql,但不支持if等標(biāo)簽。如果需要更靈活的操作,請(qǐng)使用mybatis。sumk提供了對(duì)mybatis的內(nèi)置支持。

          • redis封裝:封裝了redis的連接獲取與關(guān)閉、失敗重試、多數(shù)據(jù)源路由等。

          • 分布式session:只要在redis.properties里配置了session的地址,就實(shí)現(xiàn)了分布式session。否則就是單機(jī)運(yùn)行。切換就是這么簡(jiǎn)單

          • 異常體系:異常處理很考驗(yàn)開(kāi)發(fā)者的基本功。許多應(yīng)用的異常體系都是一團(tuán)糟。sumk可以讓開(kāi)發(fā)者從異常中解脫出來(lái),開(kāi)發(fā)人員不需要去catch異常,也不需要做太多的校驗(yàn),比如空指針之類。

          • 線程管理:sumk將應(yīng)用的線程管理起來(lái),使得系統(tǒng)的線程不至于暴漲,讓線程可以更有效的被利用,并提供工具方法,使得開(kāi)發(fā)人員可以很方便的執(zhí)行異步任務(wù)。此外還提供了限流功能,當(dāng)線程緊張的時(shí)候,低優(yōu)先級(jí)的任務(wù)會(huì)被直接拒絕。

          • 分布式鎖:因?yàn)樵S多應(yīng)用是分布式部署的,需要用到分布式鎖。sumk內(nèi)置了一套分布式鎖,只要有redis就可以運(yùn)行,不需要開(kāi)發(fā)任何額外的代碼。它的原理是基于redis的lua腳本。

          • 日志體系:在高并發(fā)應(yīng)用中,接口調(diào)用量很高,很難定位日志是哪個(gè)請(qǐng)求打印的。sumk將會(huì)記錄日志所屬的用戶或訪問(wèn),便于日志跟蹤。并且會(huì)提供統(tǒng)一日志擴(kuò)展,不需要額外使用logstash等日志工具。具體參見(jiàn)這里

          • 測(cè)試框架:數(shù)據(jù)庫(kù)和微服務(wù)的單元測(cè)試一向是痛點(diǎn)。sumk提供了測(cè)試接口,在測(cè)試模式下,所有的數(shù)據(jù)庫(kù)操作都會(huì)被回滾。它發(fā)起的微服務(wù)調(diào)用,如果被調(diào)用方允許被測(cè)試,它所做的數(shù)據(jù)庫(kù)修改也會(huì)被還原。ORM的redis緩存也會(huì)被清理,但是手工修改的redis無(wú)法被清理。

          • 其它功能:sumk還提供了web的第三方應(yīng)用登陸、web的多端互踢、攔截器等功能。它的功能遠(yuǎn)不止上述那些。它是一個(gè)百寶箱,如果你掌握了,開(kāi)發(fā)速度將會(huì)大大提升

          • 架構(gòu)圖

          使用方式:通過(guò)maven引入sumk-log、sumk.jar及其依賴包(最新版慘叫maven中央庫(kù))。可以通過(guò)sumk-log引入,也可以直接引入sumk.jar,sumk-log是可選的。

          <dependency>
              <groupId>com.github.youtongluan</groupId>
              <artifactId>sumk-log</artifactId>
              <version>2.2.1</version>
          </dependency>

           

          sumk的四大模塊為:數(shù)據(jù)庫(kù)操作、微服務(wù)、web請(qǐng)求、IOC。除了sumk-db,其它使用很簡(jiǎn)單。

          數(shù)據(jù)庫(kù)操作方面,sumk提供了sumk-db、RawDB(RawDBUtil)、NamedDB(NamedDBUtil)和Mybatis4種方式,以下是代碼示例:

              @Box  //@Box表示啟用sumkDB的事務(wù)管理,類似于spring的@Transaction
              public void test() {
                  //sumk-db類似于hibernate,以下是示例
                  DemoUser user = new DemoUser();
                  user.setAge(30);
                  user.setName("張三");
                  user.setLastUpdate(new Date());
          
                  DB.insert(user).execute(); //插入對(duì)象
          
                  //多條件查詢,sumk不好入門(mén)的也就只有這個(gè)。這個(gè)功能是可選的,不用也沒(méi)關(guān)系
                  List list=DB.select().tableClass(DemoUser.class)
                          .lessThan("lastupdate", new Date())
                          .orderByAsc("lastupdate")
                          .offset(10)
                          .limit(10)
                          .queryList();
                  //sumk-db例子結(jié)束
          
                  // RawDB使用的是原生的sql,后面跟的是要注入的參數(shù)。參數(shù)個(gè)數(shù)與sql中的?的個(gè)數(shù)一致
                  RawDB.list("select * from demouser where name=? and age=?", "登陸",12);
          
                  //NamedDB類似于mybatis,目前只支持#{}方式,不支持等標(biāo)簽。
                  NamedDB.count("select count(1) from demouser where name=#{name}", SBuilder.map("name", "登陸").toMap());
          
              }
          

           

          微服務(wù)(sumk-soa)代碼示例:

          /////////////////////////////////////服務(wù)器端:
          @Soa
          public List echo(String echo,List names){
              ............
              return list;
          }
          
          //////////////////////// 客戶端調(diào)用
          List names=Arrays.asList("游夏","游俠");
          String echo=",how are you";
          String result=Rpc.call("groupId.appId.echo", echo,names);  //返回是json格式的List對(duì)象
          

           

          sumk-http代碼示例:

              @Web 
              public List echo(String echo,List names){
                  List list=new ArrayList();
                  for(String name:names){
                      list.add(echo+" "+name);
                  }
                  return list;
              }
          
          //客戶端就是一般的http請(qǐng)求
          //請(qǐng)求路徑是http://localhost/intf/rest/echo
          //請(qǐng)求實(shí)體是data={"echo":"hi","name":["張三","李四"]}
          

                  sumk項(xiàng)目的搭建非常簡(jiǎn)單,只要app.properties、sumk.jar及其它依賴包,您就自動(dòng)擁有了架構(gòu)圖中的那些功能。啟動(dòng)方式是調(diào)用SumkServer.start()。需要jdk1.8。搭建示例參見(jiàn)文檔

          使用入門(mén):

                     只需要引入sumk包,并添加配置文件app.properties,你就能運(yùn)行sumk應(yīng)用了。具體步驟參見(jiàn)sumk框架入門(mén).docx。

          接口壓測(cè):

              運(yùn)行org.test.Main,在這個(gè)類的相同目錄下,有HttpPressTest和RpcPressTest兩個(gè)文件,分別是http和微服務(wù)的壓測(cè)用例。2個(gè)用例的壓測(cè)結(jié)果大概都在2萬(wàn)次每秒(根據(jù)機(jī)器環(huán)境的不同而不同)。

          聯(lián)系方式:

            QQ:3205207767

           

          瀏覽 25
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人操91 | 五月天成人小说 | 免费无码又爽又高潮的网站 | A级性爱视频 | 大香蕉女主播操逼祝频 |