乐趣区

关于springboot:最简单的微服务部署测试实践

微服务特地适宜业务简单,开发队伍宏大的我的项目。微服务能够达到化整为零,简化单个服务,升高沟通老本的成果。但微服务在性能上比单体服务低,也会有数据冗余的问题,要联合本身状况,不要盲目崇拜。
本文介绍一种简略的微服务技术架构。帮忙大家对微服务如何部署,如何开发有个初步的意识。

一个简略的微服务架构

部署图如下

nginx:

对外对立入口,依据 url 将申请散发到不同微服务,用 ip:port 辨别不同的微服务。也会间接解决一些动态资源的拜访,自身就是 web 服务器。

springboot+dubbo:

spring boot 是目前最风行的开发 web 服务的框架(jsp,ejb,ssh 这些框架过于老旧),它和微服务没有必然联系,但它联合 dubbo 能够开发微服务,要求就是 spring boot 工程要 import dubbo.jar 或者应用 maven 引入 dubbo。配置 dubbo-application.xml,外面写好 zookeeper 服务地址端口以及提供者和消费者要注册的接口办法。
一个微服务要调用另一个微服务的办法,只须要 @Autowired 注册接口类的对象,用对象调用办法即可。麻烦点的是各个微服务对同一个接口办法要有统一的接口形容 java 文件,应用 maven 治理形容接口的 jar 包能够无效解决接口统一的问题。
最初打 jar 包,java -jar ***.jar 一个微服务就启动了。

zookeeper:

springboot 须要 dubbo,而 dubbo 最举荐的服务注册核心是 zookeeper,相当于一个布告板,各个微服务都能够看到下面注册的提供者和消费者的接口办法

DB:

MySQL Oracle 等

redis:

缓存 session 数据,和其它有必要缓存的业务数据

tomcat+dubbo-admin:

dubbo 管理系统,用于监控和排查故障,部署在 tomcat 下,能够在浏览器上查看各个微服务的运行状况,查看某个办法是否能够被失常调用。

积分查问业务场景,帮忙了解微服务。

B 服务提供查看登陆状态性能。A 服务提供查问账号积分性能。
当用户在 app 点击查问积分时,nginx 看见 url 里有查问积分关键字,会依据 nginx.conf 的配置将申请发送到 A 服务,app 会有个 sessionid 发送给 A 服务,A 服务近程调用 B 服务的查看登陆状态的接口,将 sessionid 传给接口,B 服务接口被调用,应用 sessionid 到 redis 查用户信息,如果查问到 redis 有对应的用户信息,将用户信息返回,A 服务接管到近程调用接口返回的用户信息 userid,接下来依据用户信息到数据库 DB 查问积分状况。
这就是两个微服务配合实现一个业务的例子,用到了架构图中的全副单元。查问登陆状态的要求在各个业务都存在,所以会有很多微服务须要近程调用 B 服务的接口。同时每个微服务能够即是提供者,又是消费者。

在 windows 下配置一套残缺的微服务开发环境。

nginx

D:\Program Files\nginx-1.8.1>start nginx.exe

胜利后浏览器如下

MySQL

D:\Program Files\mysql-8.0.12-winx64\bin>mysqld –console

redis

D:\Program Files\Redis-x64-3.0.504>redis-server.exe redis.windows.conf
图我忘截了

zookeeper

双击 zkServer.cmd

tomcat 和 dubbo-admindubbo-admin

须要 github 上下载,而后独自对 dubbo-admin 进行编译打 war 包,war 包放到 tomcat 的 webapps 目录下,tomcat 启动时会主动解压出文件夹,如下图

tomcat/bin 目录执行 startup.bat  胜利后浏览器如下

关上 http://127.0.0.1:8080/dubbo-admin-2.5.8/(我最后关上页面卡死,起初删除 tomcat/log 里的全副日志后失常了)
用户名 root 明码 root

没有启动任何微服务所以上图各项都是空的。在 Intellij IDEA 运行两个微服务(cmd 里 java -jar 启动微服务 jar 包也能够,但调试批改代码不太不便)
能够看到 dubbo 管理系统能够看见两个服务,一个是提供者,一个是消费者。外面能够查看名称,状态,日志,对排错挺有帮忙的。


测试 dubug

浏览器输出登陆的 url 能够看到关上登录页面。

到此一个微服务零碎的开发调试环境就实现了。如果只测试后端服务不关怀浏览器和 app 界面的性能,能够应用 postman 工具,间接发送 url 给服务端,查看返回的 json 数据等是否达到预期要求。

退出移动版