文档章节

Jboot发布啦,如果你做微服务架构,你应该看看。

理工男海哥
 理工男海哥
发布于 2017/06/21 16:31
字数 1338
阅读 1.3W
收藏 67

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

Jboot发布啦

 

Jboot是什么呢?

详情地址地址:https://git.oschina.net/fuhai/jboot

jboot是一个类型springboot的开源框架,基于jfinal和undertow等非常优秀的、已经在商业项目中应用多年的、有良好口碑的、性能非常不出的诸多框架开发而成。

Jboot是一个新的轮子,但是是集大家之所长的一个极度好用的轮子。

如何使用Jboot呢?

第一步:maven依赖。

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

 

第二步:coding

废话,都低coding都支持什么样的coding,有什么样的好处呢?

 

我们从几个方面来看:

一、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.

 

怎么样?是否极度简单呢?

 

我们继续.

 

 

二、数据库查询。

表结构:

  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,以上是我的个人微公众号,经常分享技术心得和生活感悟,欢迎勾搭。

理工男海哥

理工男海哥

粉丝 932
博文 38
码字总数 37803
作品 5
昌平
其他
私信 提问
加载中
此博客有 27 条评论,请先登录后再查看。
Jboot 1.0 正式版发布,天下武功,唯快不破

Jboot终于迎来了1.0正式版本的发布,依赖Jfinal最新版本3.3,它已经历时6个月,发布超过了20个版本。 Jboot定位在大型分布式项目、微服务和高并发,它已经完成了类SpringCloud的功能,而且比...

理工男海哥
2017/11/22
8.4K
49
Jboot系列:代码生成工具generator的使用

Jboot是一款基于JFinal的开源框架,在JFinal的基础上,增加了微服务概念,号称“SpringCloud 之外的另一个选择,已经使用在用户量过亿的商业产品上,有超过1000家公司在使用Jboot做极速开发”...

gantaos
2019/10/21
25
0
Jboot 2.0.1 发布,新增基于 Fescar 的分布式事务支持

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对java代码、html、css、js 等资源文...

理工男海哥
2019/03/25
1.6K
4
Jboot 2.0 正式版发布

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对java代码、html、css、js 等资源文...

理工男海哥
2019/03/20
4.6K
11
jboot 1.0-beta1 发布,基于 Jfinal 类似 SpringBoot 的框架

Jboot又发新版本了,具体地址:https://git.oschina.net/fuhai/jboot jboot 1.0-beta1 changes更新如下: Jboot是一个基于jfinal、undertow开发的一个类似springboot的开源框架, 我们已经在...

理工男海哥
2017/07/14
1.5K
11

没有更多内容

加载失败,请刷新页面

加载更多

十年饮冰,难凉热血.高考失利的同学们应该怎么学习

今天练车的时候跟几个朋友聊了会天,朋友考的学校都比较好,一个山大,一个山师大,一个上师大,让我个人夹杂在他们当中作为一个高考失败者实属自卑,虽然一直在尽力准备专升本,但是难免现阶...

osc_n3mzii7x
6分钟前
6
0
阿里巴巴矢量图标库的使用

在参考小米官网写页面你时,会发现小米中有很多的矢量图标,小米的图标或许是自己的,但是我们写页面时要用到矢量图标时怎么办,可以使用阿里提供的图标库 阿里矢量图标库网址:https://www...

osc_r9wwwi0j
6分钟前
7
0
JS数据结构与算法 - 排序(冒泡、选择、插入、归并、快排)

🌸本文主要内容: 各排序算法时间复杂度 js默认sort算法于各浏览器中的实现 1.冒泡排序 2.选择排序 3.插入排序 4.归并排序(含小动画) 5.快速排序(含小动画) 时间复杂度 O(1) < O(logn)...

osc_ccy4urvn
8分钟前
9
0
使用before和after属性选择器

最近仿造了小米官网写了一遍,可以说是完全把官网给写完了。 官网中有一个log切换的动态效果,有点把我卡住了找方法找了许久,然后用一个简单的方法实现了: 先了解一下before和after两个属性...

osc_k1o54uky
9分钟前
10
0
健身以及未来科技如何解绑教育,医疗,养老依赖于地段(房产)

疫情后,谁来颠覆套路满满的健身房?硬核解析异军突起的家庭健身——鲜榨财经_哔哩哔 目前的keep,或者 其他在线教育 存在的痛点 就是 可交互性 不强。 未来 通过 5G,各种完善的传感器,以及...

osc_bvzab11e
11分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部