前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud 微服务(三) :项目简介

Spring Cloud 微服务(三) :项目简介

原创
作者头像
安宁
修改2020-07-17 10:07:22
7870
修改2020-07-17 10:07:22
举报
文章被收录于专栏:Spring Cloud 微服务

本文介绍微服务项目的基本实现。

1. 项目地址

本项目源码放在 Github 上,可以检出后查看;如果想在本地运行,需要检出与本项目配套的 远程仓库

2. 项目环境

  • openjdk:13
  • 源码级别、编译级别:9
  • 构建工具:gradle 6.4
  • spring-boot:2.3.0.RELEASE
  • spring-security:5.3.2.RELEASE
  • spring-cloud:2.2.2.RELEASE

3. 项目模块

http 和 https 端口默认是相同的,如果不同会单独说明。

peacetrue-microservice-config-center

配置中心,监听在 8888 端口,关联 peacetrue-microservice-config-repo-template 远程仓库。

peacetrue-microservice-registry-center

注册中心,监听在 8761 端口,关联配置中心。

peacetrue-microservice-gateway

接口网关,监听在 80(http) / 443(https)端口,关联配置中心和注册中心。

peacetrue-microservice-authorization-server

认证授权中心,监听在 8510 端口,关联配置中心和注册中心。此模块基于已过期的 Spring Security OAuth2 项目,新项目 spring-authorization-server 正在研发中,查看 最新进展,完成后会迁移。

peacetrue-microservice-uaa

认证授权中心,监听在 8080(http) / 8443(https)端口。因为 peacetrue-microservice-authorization-server 不支持授权码认证流程,所以实际使用该模块。

peacetrue-microservice-resource-server

资源服务,监听在 8520 端口,关联配置中心、注册中心和认证中心,提供基于 OAuth2 的访问令牌认证。包含两个接口:

  1. GET /message:需要 message.readmessage.write 权限
  2. POST /message:需要 message.write 权限

peacetrue-microservice-client-inner

内部客户端,供内部系统使用,监听在 8530 端口,关联配置中心、注册中心、认证中心和资源服务,提供基于 OAuth2 的授权码认证。

peacetrue-microservice-client-outer

外部客户端,供第三方系统使用,监听在 8531 端口,关联接口网关和认证授权中心,提供基于 OAuth2 的客户端凭据认证。

4. 配置说明

配置分为 2 部分:项目内配置和远程仓库配置。为了统一配置,尽可能使用远程仓库的配置。

配置中心只能使用项目内配置,不能使用远程仓库配置。所有其他项目都使用远程仓库配置,项目内只保留最基本的配置,包括 应用名远程仓库地址

目前设计两套环境:非生产环境(!prod)和生产环境(prod)。另外,还有一些局部环境包括:协议、日志、docker。协议包括:http 和 https;日志包括:控制台和文件;docker 包括 docker 内和非 docker。非生产环境默认使用 http 协议、控制台日志和非 docker;生产环境默认使用 https 协议、文件日志和非 docker。上线前,需要在本地模拟生产环境,可手动切换为 https 协议,验证无误后部署上线。

docker 目前尚未实现,以下配置未实现 docker。

4.1. 配置中心配置

配置中心只有项目内配置。

项目内配置

代码语言:javascript
复制
spring:
  application:
    #应用名
    name: peacetrue-microservice-config-center
  security:
    #访问配置中心的用户账号和密码
    user:
      name: ${MICROSERVICE_SECURITY_USERNAME:peacetrue}
      password: ${MICROSERVICE_SECURITY_PASSWORD:password}

server.port: ${MICROSERVICE_CONFIG_PORT:8888}
management.endpoints.web.exposure.include: "*"

logging.level.org.springframework: debug
logging.level.com.github.peacetrue: debug

---
#非生产环境
spring.profiles: '!prod'
#使用本地文件需要包含 native
spring.profiles.include: native
spring:
  cloud:
    config:
      server:
        native:
          #直接使用本地文件,避免检出 github 仓库
          searchLocations: file:../peacetrue-microservice-config-repo-template

---
#生产环境
spring.profiles: prod
#默认激活 https 和 log
spring.profiles.include: https,log

spring:
  cloud:
    config:
      server:
        git:
          #远程资源库地址
          uri: https://github.com/peacetrue/peacetrue-microservice-config-repo-template
          #如果是私有仓库需要提供用户名和密码
          username: '${MICROSERVICE_REPO_USERNAME:peacetrue}'
          password: '${MICROSERVICE_REPO_PASSWORD:password}'

logging.level.org.springframework: info
logging.level.com.github.peacetrue: info

---
#默认 http 协议,激活此配置切换到 https 协议
spring.profiles: https

server:
  ssl:
    key-store: file://${user.home}/peacetrue.cn.jks
    key-alias: peacetrue.cn
    key-store-password: ${MICROSERVICE_SSL_PASSWORD:password}

---
#默认输出到控制台,激活此配置切换到文件
spring.profiles: log

logging.file.name: logs/root.log

4.2. 非配置中心配置

非配置中心配置包括项目内配置和远程仓库配置。

不同的应用,项目内配置除了应用名不同,其他都相同,因为它们都连接到同一个配置中心。

项目内配置

代码语言:javascript
复制
spring:
  application:
    #应用名
    name: peacetrue-microservice-app
  cloud:
    config:
      #配置中心地址
      uri: ${MICROSERVICE_PROTOCOL:http}://${MICROSERVICE_SECURITY_USERNAME:peacetrue}:${MICROSERVICE_SECURITY_PASSWORD:password}@${MICROSERVICE_CONFIG_HOST:localhost}:${MICROSERVICE_CONFIG_PORT:8888}
      label: master
      fail-fast: true

---
#生产环境
spring.profiles: prod
spring.profiles.include: https

MICROSERVICE_CONFIG_HOST: peacetrue.cn

---
#默认 http 协议,激活此配置切换到 https 协议
spring.profiles: https

MICROSERVICE_PROTOCOL: https

不同的应用,共用同一个远程仓库配置 application.yml,然后有一个自己单独的配置 {应用名}.yml,上例为:peacetrue-microservice-app.yml。远程仓库配置目录结构如下:

远程仓库配置目录结构
远程仓库配置目录结构

Figure 1. 远程仓库配置目录结构

具体配置内容请查看 peacetrue-microservice-config-repo-template

5. 特殊变量

系统中涉及到的所有用户名和密码都默认为:peacetrue/password。为了方便配置提供了一些特殊变量:

  • 配置中心变量:配置中心变量影响所有项目,所以提供一种统一配置方式
  • 账号密码变量:私密信息可以不暴露在配置文件中

配置中心信息(通过以下命令添加到系统环境):

  • 主机名:export MICROSERVICE_CONFIG_HOST=localhost
  • 端口:export MICROSERVICE_CONFIG_PORT=8888

远程仓库账号

如果是私有仓库,需要提供账号密码,通过以下命令添加到系统环境:

  • 用户名:export MICROSERVICE_REPO_USERNAME=peacetrue
  • 密码:export MICROSERVICE_REPO_PASSWORD=password

各个应用登陆账号

通过以下命令添加到系统环境:

  • 用户名:export MICROSERVICE_SECURITY_USERNAME=peacetrue
  • 密码:export MICROSERVICE_SECURITY_PASSWORD=password

SSL账号

通过以下命令添加到系统环境:

  • 私钥密码:export MICROSERVICE_SSL_PASSWORD=password

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 项目地址
  • 2. 项目环境
  • 3. 项目模块
  • 4. 配置说明
    • 4.1. 配置中心配置
      • 4.2. 非配置中心配置
      • 5. 特殊变量
      相关产品与服务
      微服务引擎 TSE
      微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档