Docker&k8s微服务学习实践(二)

一、下载配置thrift

从Thrift官网 http://thrift.apache.org/ 下载thrift,然后进行安装。

笔者是windows系统,所以直接下载解压就有一个thrift的运行文件,我把它加入了环境变量。

thrift安装

运行thrift --version,如果能正确显示版本,证明thrift安装成功。

thrift安装成功

二、信息服务开发

由于信息服务只是一个很简单的公共服务,为了验证thrift的跨语言特性,我打算用python来开发信息服务,建立好工程,创建好thrift文件,定义好接口方法

定义好thrift接口方法

我们写一个简单的shell脚本来自动化运行thrift生成代码的命令。

shell脚本

只需要运行这个shell脚本就可以自动生成代码了。先简单实现发送邮件和发送短信的接口,启动python thrift service。

启动python thrift service

控制台已经打印出python thrift service启动输出。检查9090端口是否监听,netstat -na |grep 9090,发现端口成功监听

查看9090端口是否被监听

接下来补全信息服务的实现,因为发送短信是需要收费的,所以这里对它只做一个简单打印,主要是用163实现发送邮件功能,这里需要一个授权码,申请一个163邮箱,然后设置开通授权码才可使用。

补全信息服务

接着我们创建一个java api模块,然后增加shell脚本,生成java api代码。

生成java api代码

接着修改pom文件,加入thrift的依赖。

加入thrift依赖

三、用户服务开发

首先创建一个用户服务api的module,然后编写thrift文件,再编写脚本生成api代码。

thrift

接着再创建实现模块,由于我们是在user-thrift-service里实现api,所以pom文件中需要引入api模块。

pom文件引入api模块

接着开始创建数据库,我是直接用docker运行mysql的,在apps文件夹里面有redis,mysql等等中间件。用一个启动脚本,挂载本地配置文件和数据到mysql容器中,然后开始创建数据库。

启动mysql容器脚本

为了方便,我是直接用navicat创建数据表。

数据库表字段

接着开始写mapper代码,我这里采用的是mybatis。

UserMapper

接着要开始构建thrift server,这里需要和python的api保持一致,选择帧传输协议,用非阻塞io,然后启动tsocker server,用spring boot启动项目,项目启动成功。

编写thrift server

四、用户EdgeService开发

首先建立edge-service工程,再把依赖引入,因为edge-service对外是提供rest接口的,所以在pom里面需要引入spring-boot-starter-web.接着创建provider类,获取client,这样我们就可以用client调用user-service提供的服务了。

serviceProvider

接着开始写controller,对外提供http接口,首先要验证用户名和密码,密码是md5加密的,接着生成token,token用redis存储,接着返回token。

controller

启动user-thrift-service和user-edge-service,接着启动postman开始请求。

请求启动的两个服务

测试成功!可以看到thrift生成的api是成功的,user-edge-service成功的请求到了user-thrift-service提供的data查询接口。

具体代码请到我的github查看:https://github.com/jauhwan/micro-service

你可能感兴趣的:(Docker&k8s微服务学习实践(二))