2019独角兽企业重金招聘Python工程师标准>>>

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

转载于:https://my.oschina.net/yangfuhai/blog/994678

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

  1. 微服务指南走北(四):你不愿意做微服务架构的十个理由

    近段时间离职,跟同事们讲解我之前所做的微服务相关产品,对于同事们提出的问题,做了如下整理出来,加上自己的理解,分享出来跟大家一起探讨下: 问题预览 我为什么要换微服务?能给我带来什么好处? 从交互上来 ...

  2. 思考:王者荣耀为什么不使用微服务架构?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | hongjic93.brice 来源 | zh ...

  3. ThoughtWorks微服务架构交流心得

    ThoughtWorks微服务架构交流心得: (1)<人月神话>中谈到软件开发没有银弹,根源在于软件所解决的领域问题本身固有的复杂性,微服务正是从领域问题角度上进行服务拆分,来降低软件开发 ...

  4. 王者荣耀为什么不使用微服务架构?

    点击"开发者技术前线",选择"星标????" 在看|星标|留言,  真爱 作者:hongjic93.brice 出处:zhihu.com/question/35 ...

  5. 王者荣耀为什么不使用微服务架构?百思不得其解

    点击"开发者技术前线",选择"星标????" 在看|星标|留言,  真爱 作者:hongjic93.brice 出处:zhihu.com/question/35 ...

  6. 微服务架构原理与开发实战

    内容简介 最近几年软件开发方法层出不穷,微服务作为一种主流的架构模式一直热度不减.为了帮助广大程序员们更好更快地理解微服务的概念,学习微服务在项目中的实践,本书全面阐述了微服务架构模式的特点.架构思路 ...

  7. 在微服务架构中做机器学习,真的太难了

    2020-05-29 14:42:56 我曾经参与过很多由深度学习技术驱动的项目,最糟糕的情况就是被迫处理面向微服务的架构,我不是呼吁大家停止使用微服务,但想在面向微服务的架构中推动机器学习项目,很大 ...

  8. 系统部署文档_惊喜!Alibaba架构师终于发布“微服务架构与实践”文档

    前言: 对于微服务架构的概念,相信大家应该都不陌生,无论使用 Apache Dubbo.还是 Spring Cloud,都可以去尝试微服务,把复杂而庞大的业务系统拆分成一些更小粒度且独立部署的 Res ...

  9. 代码重新发布后docker服务会不会受影响_分享点经验 | 浅谈微服务架构

    点击蓝字关注我们 AMP 背景简介 在最原始的系统设计中,我们通常使用单体架构.单体架构把所有的业务逻辑都写在一起,没有对业务场景进行划分.在规模比较小的情况下工作情况良好,但是随着系统规模的扩大,它 ...

最新文章

  1. git ingore添加忽略文件无较的解决方法
  2. Java 注解 --很有趣的一篇文章
  3. 【前端】.easyUI.c#
  4. 通过java api提交自定义hadoop 作业
  5. Visual C++位图操作
  6. 华为P40系列国行版来了:价格成最大悬念!
  7. 多种问题袭来:崩溃在边缘的“直播赚钱路”
  8. 2种方式(线程间通信/互斥锁)实现两个线程,一个线程打印1-52,另一个线程打印字母A-Z,打印顺序为12A34B56C......5152Z...
  9. 使用iMazing创建配置文件时的几个重要首选项组
  10. 计算机操作系统详细学习笔记(二):处理器管理
  11. matlab做信号实验需要安装那些模块_Amesim软件安装过程
  12. 深度学习(图像处理): A neural algorithm of artistic style算法详解
  13. 一行命令批量修改染色体和位置为RS号
  14. shields 徽标_创意讲故事徽标的剖析
  15. JavaWeb之AjaxJSON
  16. (十六)从零开始学人工智能-深度学习基础3
  17. 备战Noip2018模拟赛5(B组)T2 Tree 采果子
  18. 一年的总结(09-10)
  19. IOS开发callkit(call directory extension)勘误
  20. 【转载】SAP事物代码

热门文章

  1. 如何选型APS系统,还需明确这七大关键因素
  2. 手写基于redis实现分布式限流器-pdlr
  3. 深度搜索(DFS)和广度搜索(BFS)
  4. Nginx 连接限制和访问控制Nginx 连接限制和访问控制
  5. 视频H5页面/视频app怎么做?
  6. 华为RH2288H V3服务器 从拆箱开始安装系统
  7. mysql describe 分页_mysql之分页方式了解
  8. 图象关于y轴对称是什么意思_关于x轴对称-图象关于y轴对称是什么函数
  9. 写latex 遇到bib中参考文献 的俄文人名(类似于带有声调的拼音字母)如何转义?
  10. vue2.x tui-image-editor图片编辑器的使用