§ 本文目标

通过本章节,将掌握:

  1. 通过IDE可以快速搭建微服务开发最小依赖环境
  2. 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 )

  1. 01-系统管理脚本/用于3.2.1章节
  2. 03-Apollo脚本/用于3.2.2 章节

§ Maven环境配置

  • 下载settings.xml,下载连接:https://pan.baidu.com/s/1pDitDzT6MTLFTln6Ylf8GA 提取码:e4p0
  • 修改本地存储路径
    • <localRepository>C:\maven</localRepository>
    • 同时,在IDE中设置Maven环境信息
    • 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
1
2
3
4
5
6

§ 调整ApolloConfigDB配置,编辑ServerConfig表,配置configService的地址

ApolloConfigDB

§ 配置数据库连接信息

$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
1
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
1
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
1
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
1
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
1
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
1
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}
1
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

除了注册中心外,其他应用都需要接入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命名空间,保存发布即可
  • application_yml_apollo

3.修改bootstrap.yml配置

  • 修改app.id名称为apollo创建的应用名称
  • 修改apollo.meta:http://localhost:9001/ (localhost替换为Apollo部署的实际IP,请注意,使用的是configService的端口号9001

§ 认证中心

§ 网关

§ 微服务创建

§ 工程创建

打开IDE,在工程视图右键,单击“新建工程”

ide_gclx

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

ide_gcsx

§ 模块创建

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

ide_xjmkbb

设置groupId、artiFactId等必输信息

ide_mksx

§ 配置信息调整

在apollo添加配置信息,参考3.4.8,在apollo配置页面修改如下信息

  1. 修改注册中心地址、数据库连接信息、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 #分页使用的数据库方言
1
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功能,生产建议关闭
1
2
3
4

apollo配置

#################
application:  
    swagger: 
        enabled: true #是否开启swagger功能,生产建议关闭
1
2
3
4

§ 本地启动

两种运行方式:

  1. 项目右键,单机“运行”
  2. 应用开发/服务启动/XXXMicroserviceApp通过JAVA应用程序方式运行
  3. 检查注册中心是否成功发现实例 http://注册中心IP地址:8761,Status=UP,代表实例运行正常

springeureka

§ 多级工程

§ 练习场景

构建大型的电商系统,包含很多的子系统:订单系统、客户管理、仓储管理、物流管理,每个子系统下有多个原子微服务和聚合微服务

§ 工程创建

项目在工程规划时,会设计多层级的工程、模块接口,如:

shopping
|-order
   |-ordertrans
   |-orderrollbak
|-cust
   |-custinfo
   |-credit
|-logistics
   |-transport
   |-distribution
1
2
3
4
5
6
7
8
9
10

可以通过IDE模块创建时,选择子工程的方式,进行多层级工程扩展

ide_3821

ide_3822

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

ide_3823

§ 前端工程及应用框架创建

§ 前端工程创建

前端工程以源码方式提供,下载地址为:

链接:https://pan.baidu.com/s/1JSncpLUNTNWB62ag7pzuTA 提取码:jj57

目录下提供多个版本获取,建议下载最新版本,当前为2.1.2.20190520.RELEASE

qd_3911

§ 前端访问后端配置修改

§ 微服务模式

微服务模式时,前端访问后端首先将请求发送到网关,再由网关分发到各个服务,完整的请求地址为:http://网关ip:网关端口/服务名称/api接口

因此首先在前端工程系统全局配置文件config.js (custom/config.js) 中,将服务端URL配置成网关地址

qd_3921

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

qd_3922

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

qd_3923

§ index.html预览

index.html点击预览访问

qd_3924

§ 应用框架创建

· 应用框架微服务工程创建请参考2.3.3 应用框架部署(非必需)

最后更新于: 5/9/2022, 11:20:18 AM