一、下载配置thrift
从Thrift官网 http://thrift.apache.org/ 下载thrift,然后进行安装。
笔者是windows系统,所以直接下载解压就有一个thrift的运行文件,我把它加入了环境变量。
运行thrift --version,如果能正确显示版本,证明thrift安装成功。
二、信息服务开发
由于信息服务只是一个很简单的公共服务,为了验证thrift的跨语言特性,我打算用python来开发信息服务,建立好工程,创建好thrift文件,定义好接口方法
我们写一个简单的shell脚本来自动化运行thrift生成代码的命令。
只需要运行这个shell脚本就可以自动生成代码了。先简单实现发送邮件和发送短信的接口,启动python thrift service。
控制台已经打印出python thrift service启动输出。检查9090端口是否监听,netstat -na |grep 9090,发现端口成功监听
接下来补全信息服务的实现,因为发送短信是需要收费的,所以这里对它只做一个简单打印,主要是用163实现发送邮件功能,这里需要一个授权码,申请一个163邮箱,然后设置开通授权码才可使用。
接着我们创建一个java api模块,然后增加shell脚本,生成java api代码。
接着修改pom文件,加入thrift的依赖。
三、用户服务开发
首先创建一个用户服务api的module,然后编写thrift文件,再编写脚本生成api代码。
接着再创建实现模块,由于我们是在user-thrift-service里实现api,所以pom文件中需要引入api模块。
接着开始创建数据库,我是直接用docker运行mysql的,在apps文件夹里面有redis,mysql等等中间件。用一个启动脚本,挂载本地配置文件和数据到mysql容器中,然后开始创建数据库。
为了方便,我是直接用navicat创建数据表。
接着开始写mapper代码,我这里采用的是mybatis。
接着要开始构建thrift server,这里需要和python的api保持一致,选择帧传输协议,用非阻塞io,然后启动tsocker server,用spring boot启动项目,项目启动成功。
四、用户EdgeService开发
首先建立edge-service工程,再把依赖引入,因为edge-service对外是提供rest接口的,所以在pom里面需要引入spring-boot-starter-web.接着创建provider类,获取client,这样我们就可以用client调用user-service提供的服务了。
接着开始写controller,对外提供http接口,首先要验证用户名和密码,密码是md5加密的,接着生成token,token用redis存储,接着返回token。
启动user-thrift-service和user-edge-service,接着启动postman开始请求。
测试成功!可以看到thrift生成的api是成功的,user-edge-service成功的请求到了user-thrift-service提供的data查询接口。
具体代码请到我的github查看:https://github.com/jauhwan/micro-service