Jboot發佈啦,若是你作微服務架構,你應該看看。

Jboot發佈啦html

 

Jboot是什麼呢?mysql

詳情地址地址:https://git.oschina.net/fuhai/jbootgit

jboot是一個類型springboot的開源框架,基於jfinal和undertow等很是優秀的、已經在商業項目中應用多年的、有良好口碑的、性能很是不出的諸多框架開發而成。spring

Jboot是一個新的輪子,可是是集你們之所長的一個極度好用的輪子。sql

如何使用Jboot呢?數據庫

第一步:maven依賴。

<dependency>
    <groupId>io.jboot</groupId>
    <artifactId>jboot</artifactId>
    <version>1.0-alpha3</version>
</dependency>

 

第二步:coding

廢話,都低coding都支持什麼樣的coding,有什麼樣的好處呢?api

 

咱們從幾個方面來看:瀏覽器

1、mvc

@RequestMapping("/")
public class MyController extend JbootController{   
    public void index(){
        renderText("hello jboot");
    }

 public static void main(String [] args){       
         Jboot.run(args);
   }
}

 

啓動main方法,而後訪問 http://127.0.0.1:8088,而後你就能看到瀏覽器輸出:hello jboot.緩存

 

怎麼樣?是否極度簡單呢?springboot

 

咱們繼續.

 

 

2、數據庫查詢。

表結構:

  CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `login_name` varchar(32) DEFAULT NULL,
  `password` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

在resources下建立jboot.properties文件,並配置以下:

  jboot.datasource.type=mysql
  jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/jbootdemo
  jboot.datasource.user=root
  jboot.datasource.password=

 

而後簡單改造下剛纔的controller:

@RequestMapping("/")
public class MyController extend JbootController{   
    public void index(){
        List<Record> records = Db.find("select * from `user`");
        setAttr("users",records);
        render("index.html");
    }

 public static void main(String [] args){       
         Jboot.run(args);
   }
}

 

由於咱們用到了html,因此咱們在resource下創建一個index.html來渲染數據。html的內容以下:

<html >
<head>
    <meta charset="UTF-8">
    <title>users</title>
</head>
<body>
#for(user : users)
   #(user.login_name)<br />
#end
</body>
</html>

 

啓動main方法,訪問頁面後,頁面顯示了數據庫列表的數據。

 

OK,實際上這些都是小case,來個複雜的。

 

三:微服務

微服務是什麼呢?在大型的系統裏面,好比京東。實際上有不少個「項目」組成的,每一個「項目」均可以理解爲一個服務,把大型的項目拆分紅多個微小的服務就是微服務了。

 

微服務有什麼好處呢?你們能夠試想一下,若是咱們把全部的功能都寫在一個「項目」裏面,若是說其中一個小模塊除了點問題,咱們從新升級這個小模塊,那就須要咱們對整個項目從新部署,這個過程當中可能就會中斷服務。

 

好比說,京東的快遞查詢模塊出現問題了,不願能由於升級而重啓整個京東網站。

 

這個時候就只能把每一個模塊都作成一個「項目」或者叫「服務」。

 

可是這個時候,京東網想要去讀取這個「項目」的數據,怎麼辦呢?咱們可讓這個項目提供一個api接口,而後讓須要這個數據的項目去調用這個接口。

 

可是,這樣仍是很麻煩。

 

在衆多的項目中,都使用到了一種技術,叫RPC,也就是remote procedure call的簡寫。翻譯過來叫遠程過程調用,再簡單點就理解爲「遠程調用」好了,

也就是咱們在咱們的項目裏,只要調用 xxx.aaa() 這樣,就調用到了遠程服務器的 aaa() 方法了。

 

RPC的開源框架,市面上有不少,好比google的grpc,tiwtter的thirft,淘寶的dubbo,新浪的motan。

 

Jboot集成了 grpc、thirft和motan(爲何不要dubbo呢?由於好幾年沒維護了),因此在jboot中使用rpc,極致、簡單、爽!

 

首先須要咱們定義個接口,接口中不要有任何的實現。代碼以下:

public interface HelloService {
    public String hello(String name);
}

而後只須要咱們在項目A中,寫咱們本身的一個類,實現這個接口,通常叫service類。代碼以下:

@JbootrpcService
public class myHelloServiceImpl  implements HelloService {
    public String hello(String name){
         System.out.println("hello" + name);
         return "hello ok";
    }
}

注意:在實現類中添加@JbootrpcService註解。

 

而後在咱們的另個項目,暫且叫項目B,在這個項目中代碼以下:

public class MyController extends bootController{

    @JbootrpcService
    HelloService service ;

    public void index(){
        renderText("hello " + service.hello());
    }

}

定義個HelloService接口,也是用@JbootrpcService註解,就能夠爽快在在項目B中調用項目A的接口了。

 

固然,還須要給jboot作個簡單的配置:

jboot.rpc.type = motan
jboot.rpc.registryType = consul
jboot.rpc.registryAddress = 127.0.0.1:8500

下載consul到本地計算機,而後執行命令

consul -agent dev

注:consul 下載地址 http://consul.io

 

一旦涉及到微服務,更多的只是好包括瞭如何防止微服務雪崩、如何對爲輔的調用統計、如何對微服務的跟蹤,若是對微服務的路由,這些實際上Jboot已經支持,可是並不是這篇文字能寫的完的了。

 

實際上、Jboot同樣支持類型spring的ioc和aop,支持了衆多的mq(activeMQ、rabbitMQ,阿里雲商業MQ等等)和 良好的緩存機制、事件機制等等等等。

 

更多功能,等你來發現了...

 

Jboot 開源地址:https://git.oschina.net/fuhai/jboot

 

 

我的微公衆號

我是某上市公司的CTO,以上是個人我的微公衆號,常常分享技術心得和生活感悟,歡迎勾搭。

相關文章
相關標籤/搜索