时间:2021-05-20
前言
本文将使用Maven、gRPC、Protocol buffers、Docker、Envoy等工具构建一个简单微服务工程,笔者所使用的示例工程是以前写的一个Java后端工程,因为最近都在 学习微服务相关的知识,所以利用起来慢慢的把这个工程做成微服务化应用。在实践过程踩过很多坑,主要是经验不足对微服务还是停留在萌新阶段,通过本文 记录创建微服务工程碰到一些问题,此次实践主要是解决以下问题:
本文假设读者已经了解以下相关知识:
由于是初步实现微服务,不会考虑过多的细节,现阶段只需要能够使用gRPC正常通信,后续计划会发布到k8s中,使用istio实现来服务网格。
使用Maven
现在比较流行的构建工具有Maven和Gradle,现阶段后端开发大多数都是用的Maven所以本工程也使用Maven来构建项目,当然使用Gradle也可以两者概念大都想通,不同的地方大多是实现和配置方式不一致。
使用项目继承
根据Maven的POM文件继承特性,将工程分不同的模块,所有的模块都继承父pom.xml的依赖、插件等内容,这样就可以实现统一管理,并方便以后管理、维护。先看一下大概的项目结构:
AppBubbleBackend (1)├── AppBubbleCommon├── AppBubbleSmsService (2)├── AppBubbleUserService├── docker-compose.yaml (3)├── pom.xml├── protos (4)│ ├── sms│ └── user└── scripts (5) ├── docker ├── envoy ├── gateway └── sql以下是各个目录的用处简述,详细的用处文章后面都会提到,先在这里列出个大概:
知道大概的项目工程结构后我们创建一个父pom.xml文件,放在AppBubbleBackend目录下面:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://pile-custom -P docker-build# Run servicejava -jar ${projectDir}/target/app.jarentrypoint.sh脚本中将服务工程编译成app.jar包再运行服务。还有envoy代理也要启动起来这样我们就可以使用curl或其他工具直接进行测试了。
总结
搭建这个工程大概摸索了一周的时间,主要的时间是花在了Protocol buffers文件的管理与使用Envoy作为代理调试gRPC服务上。文章中的示例工程已经传到了GitHub: AppBubbleBackend 后面会打算慢慢的完善这个应用,这是个简单的短视屏应用除了服务器还包含了Android和iOS端,等到将后端微服务化为开源出来供学习交流使用。
参考引用
gRPC官方文档
Protocol buffers Maven 插件文档
Protocol buffers官方文档
gRPC 官方文档中文版
gRPC-JSON transcoder
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言最近一直研究springboot,根据工作需求,工作流需要作为一个单独的微服务工程来提供给其他服务调用,现在简单的写下工作流(使用的activiti)微服务
基于springboot开发的微服务应用,与MyBatis如何集成?集成方法可行的方法有:1.基于XML或者JavaConfig,构建必需的对象,配置MyBat
微服务实践“微服务”自然要学习如何做服务注册与发现基于SpringBoot来进行微服务的学习,自然选择了与之息息相关的SpringCloud;当然可以选择其他的
在工作中可能会遇到需要在内网环境搭建SpringBoot工程的需要,下面我们来搭建一个离线SpringBoot工程准备工作:在线搭建好的SpringBoot工程
springCloud是基于springboot搭建的微服务。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中