Docker Kubernetes 微服务容器化实践(二) 2.1 微服务实战 thrift篇 ②--用户服务Thrift

本文主要是介绍Docker Kubernetes 微服务容器化实践(二) 2.1 微服务实战 thrift篇 ②--用户服务Thrift,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

目录

1)API接口定义 

代码目标

接口定义实现

2)实现类接口


 

  • 1)API接口定义 

  1. 这里是api接口定义代码内容
  • 代码目标

  • 接口定义实现

  1. 在microservice项目中创建 user-thrift-service-api 模块
  2. user-thrift-service-api/pom.xml添加thrift版本build插件
  3. user-thrift-service-api/thrift/user_service.thrift 创建实体接口
    namespace java com.imooc.thrift.userstruct UserInfo {1:i32 id,2:string username,3:string password,4:string realName,5:string mobile,6:string email,7:string intro,8:i32 stars
    }service UserService {UserInfo getUserById(1:i32 id);UserInfo getTeacherById(1:i32 id);UserInfo getUserByName(1:string username);void regiserUser(1:UserInfo userInfo);}
  4. gen-code代码生成
    #!/usr/bin/env bash
    thrift --gen java -out ../src/main/java user_service.thrift

     

  • 2)实现类接口

  1. 在microservice项目中创建 user-thrift-service 模块
  2. user-thrift-service/src/main/java添加UserServiceImpl,前提先要导入不然找不到
  3. 创建数据库 docker启动mysql (略)
  4. https://mvnrepository.com 添加对应依赖 完整依赖如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.3.RELEASE</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.imooc</groupId><artifactId>user-thrift-service</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.thrift</groupId><artifactId>libthrift</artifactId><version>0.10.0</version></dependency><dependency><groupId>com.imooc</groupId><artifactId>user-thrift-service-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version></dependency><dependency><groupId>com.imooc</groupId><artifactId>message-thrift-service-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
    </project>
  5. application.properties 配置数据源 
    service.name=user-thrift-service
    service.port=7911#数据源的配置
    spring.datasource.url=jdbc:mysql://192.168.1.8:3306/db_user
    spring.datasource.username=root
    spring.datasource.password=aA111111
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
  6.  microservice/user-thrift-service/src/main/java/com/imooc/user/mapper/UserMapper.java
    package com.imooc.user.mapper;import com.imooc.thrift.user.UserInfo;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;/*** Created by Michael on 2017/10/28.*/
    @Mapper
    public interface UserMapper {@Select("select id,username, password, real_name as realName," +"mobile, email from pe_user where id=#{id}")UserInfo getUserById(@Param("id")int id);@Select("select id,username, password, real_name as realName," +"mobile, email from pe_user where username=#{username}")UserInfo getUserByName(@Param("username")String username);@Insert("insert into pe_user (username, password, real_name, mobile, email)" +"values (#{u.username}, #{u.password}, #{u.realName}, #{u.mobile}, #{u.email})")void registerUser(@Param("u") UserInfo userInfo);@Select("select u.id,u.username,u.password,u.real_name as realName," +"u.mobile,u.email,t.intro,t.stars from pe_user u," +"pe_teacher t where u.id=#{id} " +"and u.id=t.user_id")UserInfo getTeacherById(@Param("id")int id);
    }
    

     

  7.  microservice/user-thrift-service/src/main/java/com/imooc/user/service/UserSerivceImpl.java
    package com.imooc.user.service;import com.imooc.thrift.user.UserInfo;
    import com.imooc.thrift.user.UserService;
    import com.imooc.user.mapper.UserMapper;
    import org.apache.thrift.TException;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;/*** Created by Michael on 2017/10/28.*/
    @Service
    public class UserSerivceImpl implements UserService.Iface {@Autowiredprivate UserMapper userMapper;@Overridepublic UserInfo getUserById(int id) throws TException {return userMapper.getUserById(id);}@Overridepublic UserInfo getTeacherById(int id) throws TException {return userMapper.getTeacherById(id);}@Overridepublic UserInfo getUserByName(String username) throws TException {return userMapper.getUserByName(username);}@Overridepublic void regiserUser(UserInfo userInfo) throws TException {userMapper.registerUser(userInfo);}
    }
    

     

  8.   microservice/user-thrift-service/src/main/java/com/imooc/user/thrift/ThriftServer.java
    package com.imooc.user.thrift;import com.imooc.thrift.user.UserService;
    import org.apache.thrift.TProcessor;
    import org.apache.thrift.protocol.TBinaryProtocol;
    import org.apache.thrift.server.TNonblockingServer;
    import org.apache.thrift.server.TServer;
    import org.apache.thrift.transport.TFramedTransport;
    import org.apache.thrift.transport.TNonblockingServerSocket;
    import org.apache.thrift.transport.TTransportException;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;/*** Created by Michael on 2017/10/28.*/
    @Configuration
    public class ThriftServer {@Value("${service.port}")private int servicePort;@Autowiredprivate UserService.Iface userService;@PostConstructpublic void startThriftServer() {TProcessor processor = new UserService.Processor<>(userService);TNonblockingServerSocket socket = null;try {socket = new TNonblockingServerSocket(servicePort);} catch (TTransportException e) {e.printStackTrace();}TNonblockingServer.Args args = new TNonblockingServer.Args(socket);args.processor(processor);args.transportFactory(new TFramedTransport.Factory());args.protocolFactory(new TBinaryProtocol.Factory());TServer server = new TNonblockingServer(args);server.serve();}
    }
    

     

  9.  注意必须创建完ThriftServer.java 才能启动ServiceApplication,不然启动失败

这篇关于Docker Kubernetes 微服务容器化实践(二) 2.1 微服务实战 thrift篇 ②--用户服务Thrift的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/492717

相关文章

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa