实践经验总结"/>
ServiceComb Java Chassis 快速入门和复杂系统实践经验总结
快速入门-搭建一个典型的微服务应用
项目介绍
示例微服务应用由 4 个微服务组成。
- 应用网关:负责接收前端的请求,并将请求转发给后端服务处理。应用网关还负责简单的认证功能。
- 文件服务: 提供一个上传文件接口,和删除文件接口。
- 用户管理: 提供登录认证逻辑实现。
- 静态页面托管 HTML/JS/CSS等。
本地微服务引擎本是CSE 微服务引擎的简化版本,用于本地开发调试。它包含3个服务。
- 服务中心:负责服务注册和发现。
- 配置中心:负责集中配置管理。
- 控制台:提供前端管理界面。
安装本地微服务引擎
下载本地微服务引擎:.html
启动:
start.bat
访问:
http://localhost:30106/#/cse/service/dashboard
运行示例微服务应用
下载示例微服务应用:
git clone .git
进入本示例项目:
cd porter_springboot
编译项目:
mvn clean install
初始化数据库:本地安装 mysql 数据库, 并且执行目录user-service\src\main\resources\config下面的脚本 create_db_user.sql 。
启动:数据库使用 root/root 登录, 如果数据库密码为自定义值,需要修改脚本后运行。
start_all.bat
访问:http://localhost:9090/ui/login.html 登录用户为 admin 或者 guest, 密码为 test。登录以后可以上传一个文件、根据文件 ID 删除一个文件。
了解示例微服务应用项目结构和开发过程
Maven: 依赖管理
Java-chassis 采用依赖。 依赖关系管理本身并不复杂,但是在项目升级、集成新的第三方软件的时候,容易出现冲突。开发者需要深刻理解 Maven 依赖管理的一些技巧,才能够快速解决这些冲突。
示例微服务项目通过 maven depdendency management 引入 java-chassis 的依赖管理。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>java-chassis-dependencies</artifactId>
<version>${servicecomb.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
依赖关系管理并不会在项目中引入三方件,只是告诉项目中,如果引入某个三方件,这个三方件的版本,需要按照 java-chassis-dependencies 里面指定的版本引入。因为 java-chassis-dependencies 引入的三方件经过大量的集成测试,因此能够极少的降低三方件软件冲突的风险。
学习材料:使用maven管理复杂依赖关系的技巧
打包方式
JAVA 项目一般有两种打包方式:Flat 方式和 Spring Boot 方式。
- Flat方式:应用编译以后,项目依赖的 jar 包放到一个独立的 lib 目录。
- Spring Boot 方式:应用编译以后,将项目的 class, 和依赖的 jar 包都打包在一个 jar 文件中。
Spring Boot方式在分发应用的时候更加简单,所以项目采用 Spring Boot 方式打包。需要在 POM 中引入 Spring Boot 的打包插件。
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.6.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<mainClass>${main.class}</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
编译选项
Java-chassis 的运行依赖于编译选项中增加 -parameters , 可以通过 maven compiler plugin 指定。
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-parameters</compilerArgument>
</configuration>
</plugin>
</plugins>
</pluginManagement>
运行环境和启动类
Java-chassis 开发非常灵活,支持不同的运行环境。比如打包为 war,运行于 tomcat 中;和 spring boot 集成,运行于 embedded tomcat 中;使用轻量级的 HTTP 服务器独立运行。 示例微服务项目的 user-service、file service、website 都采用和 spring boot 集成,运行于 embedded tomcat 中。gateway-service使用轻量级的 HTTP 服务器独立运行。
user-service、file-service都引入了如下依赖:
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>java-chassi
更多推荐
ServiceComb Java Chassis 快速入门和复杂系统实践经验总结
发布评论