添加服务依赖服务

1.1 服务为什么要依赖其他服务

当一个独立的业务系统不能完成所有功能时,就需要借助其他的服务来实现。如web服务一般都需要数据库存储数据,前端页面展现程序需要调用后端API服务获取数据等等。

建立服务依赖的操作请参考:添加数据库依赖

1.2 服务如何连接依赖服务

当服务开启对内服务后,其他服务才能通过【添加依赖服务】的方式进行关联,服务与依赖的服务建立起关联后,下一步就是连接依赖服务。

在【依赖】页面中的 【依赖应用信息】可以看到已经依赖的服务:

添加服务依赖 - 图1

(1) 获取连接信息

选择其中一个依赖服务,点击【连接信息】会弹出连接信息页面:添加服务依赖 - 图2

连接信息分为两类:

  • 变量名

当服务的端口打开对内服务后,会生成一个默认的端口别名这个别名就是该服务的连接信息的前缀。如一个内部的API服务,端口别名是 USERAPI 则,其他服务与该API建立关联后,就可以通过 USERAPI_HOST 找到API服务的连接IP,通过USERAPI_PORT 找到API服务的端口号,如果还需要添加其他的变量名,可以通过 【依赖】—【服务连接信息】添加更多的依赖相关的变量。

  • 变量值

服务可以通过确定的变量值来连接被依赖(打开对内服务)的服务,我们不推荐使用这种方式连接,这种方式属于硬编码,所有配置都写死到代码中,对于业务安全与程序灵活性都有影响。我们推荐使用环境变量名的方式连接服务。

(2) 服务连接依赖服务

当服务添加了依赖,并且查看了连接信息后,下一步就是修改服务的配置,连接依赖的服务,以Springcloud程序为例介绍通过环境变量的形式连接依赖的服务:

application.yml 文件

  1. ...
  2. spring:
  3. data:
  4. mysql:
  5. host: ${MYSQL_HOST}
  6. username: ${MYSQL_USER}
  7. password: ${MySQL_PASS}
  8. database: ${MYSQL_DB}
  9. port: ${MYSQL_PORT}
  10. ...

其他各类语言都有获取环境变量的方法,如果不想用环境变量,也可以使用直接变量值,但按照十二要素原则,我们不推荐使用硬编码的方式连接服务。

原文: https://www.rainbond.com/docs/stable/user-manual/app-manage/service-manage/service-rely.html