# jboot-demo

#### 介绍
超简洁的多模块Jboot Rpc演示,使用最新Jboot 3.1.5版本

2020-04-16 :

1)将两种rpc和注册中心的配置组合拆分成了2个独立的分支,请留意,以后可能不会在master上更新代码

2)因为服务大多情况下与docker配合使用,以后基础服务,如注册中心,redis,配置中心等直接使用docker安装,因为相关url地址配置的是我本机linux虚拟机的ip地址。如果在windows下运行代码,请注意修改ip,并且安装,启动对应的服务。

#### 软件架构

本demo使用最简单的用户登录业务展示Jboot rpc的用法,并按微服务的思维分成了对应模块。掌握这个demo的使用原理,就可以做真实的微服务应用开发了。当然,本demo仅仅演示核心的rpc功能。为了让代码简洁易懂,没有加入除rpc调用之外的其他功能。在掌握本demo的原理后。其他功能请参考Jboot官方文档扩展:https://gitee.com/fuhai/jboot/tree/master


#### 启动步骤

1.  将项目代码导入到eclipse或idea中,地址是:https://gitee.com/gx0803/jboot-demo.git

2.  新建mysql数据库jbootdemo,导入初始数据,初始化sql脚本位于_doc/sql/jbootdemo.sql

3.  如果需要改数据库用户名和密码,更改jboot-provider模块下的jboot.properties文件即可,如下位置

![修改数据库配置](https://images.gitee.com/uploads/images/2020/0407/144111_90a8a32b_120251.png "修改数据库配置.png")

4.  实现RPC的最基本核心组件在于RPC框架和注册中心。本demo采用了两种组合。
    默认组合为motan+consul。可选组合为dubbo+zookeeper。
    想要切换rpc的实现方式,请按下图替换demo-provider模块和demo-web模块的jboot.properties和pom.xml,文件位于_doc目录

    ![替换provider配置](https://images.gitee.com/uploads/images/2020/0407/144708_784b66f2_120251.png "替换provider配置")

    ![替换web配置](https://images.gitee.com/uploads/images/2020/0407/144923_0fd901f5_120251.png "替换web配置.png")

5.  如果使用motan+consul,本地环境安装consul,并启动服务,使用默认端口号8500;如果使用dubbo+zookeeper,本地环境安装zookeeper,并启动服务,使用默认端口2181

6.  先运行demo-provider下的cn.goldcup.jboot.DemoRun的main函数,启动提供者,默认使用8090端口,如果端口占用,修改该模块的jboot.properties中的undertow.port属性

7.  再运行demo-web下的cn.goldcup.jboot.DemoRun的main函数,启动消费者,默认使用80端口,如果端口占用,修改该模块中的jboot.properties中的undertow.port属性。

8.  访问http://localhost
    进入登录页面,可用gaoxing/123456,huangtao/654321两个账号测试RPC调用过程。demo仅仅演示rpc调用,密码没有使用加密。

9.  如果RPC调用成功,访问注册中心可以看到对应服务,控制台也会输出相关sql和controller请求信息。

10、内置了Model的代码生成器,位于demo-model模块下的cn.goldcup.jboot._ModelGenerator,同时生成BaseModel和Model
    业务层代码生成器一般情况可能并不需要,参考Jboot文档:https://gitee.com/fuhai/jboot/blob/master/doc/docs/codegen.md


#### 补充说明

1.  RPC管理界面不是必须的,如果需要UI控制台,请自行根据选用的rpc框架,安装dubbo-admin或者montan-manager

2.  所用到的RPC和注册中心在线文档地址如下:

    1)Motan:https://github.com/weibocom/motan/wiki/zh_overview

    2)Apache Dubbo:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

    zookeeper和consul没有官方中文文档,找了感觉写得比较全的中文文档。

    3)Zookeeper:https://www.w3cschool.cn/zookeeper/

    4)Consul:https://blog.csdn.net/liuzhuchen/article/details/81913562?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

3.  Demo虽简陋,对于小白来说确实很好的入门操作。后续会持续增加新功能的体验,通过不断实操掌握Jboot提供的丰富特性,同时学习微服务的理念和思维,这才是技术的价值所在!

至于Jboot中微服务的其他功能,请参考海哥Jboot下的test代码:https://gitee.com/fuhai/jboot/tree/master/src/test/java/io/jboot/test
欢迎在Jboot交流QQ群601440615一起交流!感谢jplus脚手架作者Retire的大力支持,他在使用新版本Jboot调通RPC的过程中给予了我很多帮助!
有兴趣大家也可以关注一下:https://gitee.com/retire/jplus