§ 本文目标
通过本章节,将掌握:
- 通过IDE可以快速搭建微服务开发最小依赖环境
- IDE中其它工程模板的创建及期用途
§ 练习场景
通过IDE创建微服务开发最小依赖环境:注册中心、apollo配置中心、认证中心、API网关、微服务模块(在该工程中开发业务逻辑)
§ 操作步骤
§ 环境准备
PC建议配置:CPU 4核+,内存8G+
网络环境:联网+公司VPN, 网康下载及操作说明:(VPN连接操作说明.pdf)
开发环境:JDK1.8+, tdsql, Redis
开发工具:前、后端IDE,下载
注:后端IDE下载YuSpIDE_V1.3.0_20190403_release_x64.rar版本, 前端IDE下载YuFpIDE_v1.4.0_x64_20190120.zip版本
端口规划:按照开发规范端口规划进行分配
§ 数据库脚本下载
SQL脚本:统一服务平台脚本,apollo脚本(链接:https://pan.baidu.com/s/1HzF-hbgo6_YH6vOZvGWQUA 提取码:zg87 )
- 01-系统管理脚本/用于3.2.1章节
- 03-Apollo脚本/用于3.2.2 章节
§ Maven环境配置
- 下载settings.xml,下载连接:https://pan.baidu.com/s/1pDitDzT6MTLFTln6Ylf8GA 提取码:e4p0
- 修改本地存储路径
<localRepository>C:\maven</localRepository>- 同时,在IDE中设置Maven环境信息

§ 数据库初始化
§ 导入系统管理脚本
§ 导入apollo数据脚本
在mysql创建数据库名为:ApolloPortalDB,然后导入sql文件(脚本来自3.1章节下载的apollo SQL脚本)
$ 通过各种MySQL客户端导入apolloportaldb.sql即可,无需手动创建数据库
在mysql创建数据库名为:ApolloConfigDB,然后导入sql文件(脚本来自3.1章节下载的apollo SQL脚本)
$ 通过各种MySQL客户端导入apolloconfigdb.sql即可,无需手动创建数据库
§ 注册中心
服务发现是基于微服务架构的关键原则之一。尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱。ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性
§ 创建apollo
§ 下载的压缩包
https://github.com/ctripcorp/apollo/releases/download/v1.3.0/apollo-configservice-1.3.0-github.zip
https://github.com/ctripcorp/apollo/releases/download/v1.3.0/apollo-adminservice-1.3.0-github.zip
https://github.com/ctripcorp/apollo/releases/download/v1.3.0/apollo-portal-1.3.0-github.zip
§ 上传解压
[root@ycdata-node-01 local]# pwd
/usr/local
[root@ycdata-node-01 local]# ls -alrt |grep apollo
drwxr-xr-x 4 root root 4096 3月 4 17:48 apollo-configservice-1.3.0
drwxr-xr-x 4 root root 4096 3月 4 17:51 apollo-portal-1.3.0
drwxr-xr-x 4 root root 4096 3月 13 17:46 apollo-adminservice-1.3.0
2
3
4
5
6
§ 调整ApolloConfigDB配置,编辑ServerConfig表,配置configService的地址

§ 配置数据库连接信息
$Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑scripts/build.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息
修改adminservice配置文件的数据库信息
[root@ycdata-node-01 config]# cat /usr/local/apollo-adminservice-1.3.0/configapplication-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = admin
2
3
4
5
修改configserver配置文件的数据信息
[root@ycdata-node-01 config]# cat /usr/local/apollo-configservice-1.3.0/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = admin
2
3
4
5
修改portal配置文件的数据库信息
[root@ycdata-node-01 config]# cat /usr/local/apollo-portal-1.3.0/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = admin
2
3
4
5
§ 配置启动端口
修改configservice端口为SERVER_PORT=9001
[root@ycdata-node-01 local]# cat /usr/local/apollo-configservice-1.3.0/scripts/startup.sh
#!/bin/bash
SERVICE_NAME=apollo-configservice
## Adjust log dir if necessary
LOG_DIR=/opt/logs/100003171
## Adjust server port if necessary
SERVER_PORT=9001
2
3
4
5
6
7
修改adminservice端口为SERVER_PORT=9002
[root@ycdata-node-01 local]# cat /usr/local/apollo-adminservice-1.3.0/scripts/startup.sh
#!/bin/bash
SERVICE_NAME=apollo-adminservice
## Adjust log dir if necessary
LOG_DIR=/opt/logs/100003172
## Adjust server port if necessary
SERVER_PORT=9002
2
3
4
5
6
7
修改portal端口为SERVER_PORT=9003
[root@ycdata-node-01 local]# cat /usr/local/apollo-portal-1.3.0/scripts/startup.sh
#!/bin/bash
SERVICE_NAME=apollo-portal
## Adjust log dir if necessary
LOG_DIR=/opt/logs/100003173
## Adjust server port if necessary
SERVER_PORT=9003
2
3
4
5
6
7
修改portal接入configsever的端口,默认导出为dev环境,所以配置为:dev.meta=http://localhost:9001
[root@ycdata-node-01 config]# cat /usr/local/apollo-portal-1.3.0/config/apollo-env.properties
local.meta=http://localhost:8080
dev.meta=http://localhost:9001
fat.meta=http://fill-in-fat-meta-server:8080
uat.meta=http://fill-in-uat-meta-server:8080
lpt.meta=${lpt_meta}
2
3
4
5
6
§ 执行启动
/usr/local/apollo-configservice-1.3.0/scripts/startup.sh #启动配置服务器 ./usr/local/apollo-adminservice-1.3.0/scripts/startup.sh #启动admin服务器 ./usr/local/apollo-portal-1.3.0/scripts/startup.sh #启动portal端
§ 检查
登录http://localhost:9003/ ,用户名/密码:apollo/admin ,代表成功部署apollo配置中心

§ 使用apollo
除了注册中心外,其他应用都需要接入Apollo,本节点将统一进行讲解操作流程:
1.为Apollo工程配置
- 登录http://localhost:9003/ 用户名/密码:apollo/admin,增加微服务配置信息,详细配置参考4.4 Apollo配置中心
- 空间名称:application,格式:yml (在启动上,默认已增加了@EnableApolloConfig(value = {ApolloConstants.NAMESPACE_APPLICATION_YML}) 注解,用于配置信息加载)
2.为Apollo内容的工程添加配置内容
- IDE创建工程后,会在路径应用配置---服务配置下初始化文件:application.yml.apollo,复制文件的内容到Apollo命名空间,保存发布即可

3.修改bootstrap.yml配置
- 修改app.id名称为apollo创建的应用名称
- 修改apollo.meta:http://localhost:9001/ (localhost替换为Apollo部署的实际IP,请注意,使用的是configService的端口号9001)
§ 认证中心
§ 网关
§ 微服务创建
§ 工程创建
打开IDE,在工程视图右键,单击“新建工程”

下一步,根据项目实际需要,设置groupId、artifactId、version等必输信息

§ 模块创建
工程右键->单击“模块”,选择微服务模块:

设置groupId、artiFactId等必输信息

§ 配置信息调整
在apollo添加配置信息,参考3.4.8,在apollo配置页面修改如下信息
修改注册中心地址、数据库连接信息、Redis配置信息
application.yml 或 apollo****在线配置
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/ #微服务注册中心地址
spring:
#数据库配置
datasource:
driver-class-name: oracle.jdbc.driver.OracleDriver #数据库驱动类
type: com.zaxxer.hikari.HikariDataSource #datasource使用的连接池类型
validation-query: SELECT 1 FROM DUAL #datasource连接验证的查询语句
url: jdbc:oracle:thin:@localhost:1521:ycorcl #数据库连接的url
username: yusp #数据库连接的用户名
password: yusp #数据库连接的密码
#如不使用redis,请将以下配置删除
redis:
database: 0 #Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
host: 127.0.0.1 #Redis的地址
port: 6379 #Redis的端口
password: 123456 #Redis的密码
timeout: 60000 #连接超时时间(毫秒)
#分页配置
pagehelper:
helperDialect: oracle #分页使用的数据库方言
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
§ 开启swagger
bootstrap.yml
#################
application:
swagger:
enabled: true #是否开启swagger功能,生产建议关闭
2
3
4
apollo配置
#################
application:
swagger:
enabled: true #是否开启swagger功能,生产建议关闭
2
3
4
§ 本地启动
两种运行方式:
- 项目右键,单机“运行”
- 应用开发/服务启动/XXXMicroserviceApp通过JAVA应用程序方式运行
- 检查注册中心是否成功发现实例 http://注册中心IP地址:8761,Status=UP,代表实例运行正常

§ 多级工程
§ 练习场景
构建大型的电商系统,包含很多的子系统:订单系统、客户管理、仓储管理、物流管理,每个子系统下有多个原子微服务和聚合微服务
§ 工程创建
项目在工程规划时,会设计多层级的工程、模块接口,如:
shopping
|-order
|-ordertrans
|-orderrollbak
|-cust
|-custinfo
|-credit
|-logistics
|-transport
|-distribution
2
3
4
5
6
7
8
9
10
可以通过IDE模块创建时,选择子工程的方式,进行多层级工程扩展


完成子工程创建后,可在子工程上继续创建多级工程,或者模块(继续微服务创建章节操作流程)

§ 前端工程及应用框架创建
§ 前端工程创建
前端工程以源码方式提供,下载地址为:
链接:https://pan.baidu.com/s/1JSncpLUNTNWB62ag7pzuTA 提取码:jj57
目录下提供多个版本获取,建议下载最新版本,当前为2.1.2.20190520.RELEASE

§ 前端访问后端配置修改
§ 微服务模式
微服务模式时,前端访问后端首先将请求发送到网关,再由网关分发到各个服务,完整的请求地址为:http://网关ip:网关端口/服务名称/api接口
因此首先在前端工程系统全局配置文件config.js (custom/config.js) 中,将服务端URL配置成网关地址

服务映射信息配置在app.data.service.js(custom/common/app.data.service.js),为服务名称定义全局变量,并将value配置为服务名,与后台配置文件中spring.application.name一致。其中要访问且使用统一服务平台应用框架基础部分,必须启动且配置uaa、yusp-app-oca、yusp-app-common三个服务,其余标注服务可根据需要启动

代码中发起请求的URL参考如下:

§ index.html预览
index.html点击预览访问

§ 应用框架创建
· 应用框架微服务工程创建请参考2.3.3 应用框架部署(非必需)
← 日志开发 HelloWord开发 →