独立部署模式
非凌云业务中台(第三方)开发应用,依旧采用集成中心对接南向子系统,因此对集成中心进行独立部署,并提供简易配置工具,进行套件查看、套件授权、套件绑定、适配器配置等操作。
服务器配置要求
- cpu 4c+(多线程)
- 内存 16G+
- 数据盘 200G+
- 操作系统 CentOS7.7+
基础服务:k3s、nacos、mysql、redis
应用服务:pai-apistore、pai-apis-edge-ui、pai-data-sync-edge-agent
开发
在凌云开发者平台上进行协议套件定义和适配器开发
应用实现DEMO
- 配置参数 bootstrap-dev.yml
pai:
apistore:
config:
api-server: http://pai.flyrise.cn/apistore-api
api-router: /open/v1/1/ip/query
client-id: kysK******K4zqdf
secret-key: 3ylsWI******daWTOSNj
config-id: 235546446765675676576765
- ApiProperties.java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties("pai.apistore.config")
public class ApiProperties {
/**
* 集成中心服务地址
*/
private String apiServer;
/**
* 应用授权ID
*/
private String clientId;
/**
* 应用授权Key
*/
private String secretKey;
/**
* 协议地址
*/
private String apipRouter;
/**
* configId适配器配置ID
*/
private String configId;
public String getApiServer() {
return apiServer;
}
public void setApiServer(String apiServer) {
this.apiServer = apiServer;
}
public String getApiRouter() {
return apiRouter;
}
public void setApiRouter(String apiRouter) {
this.apiRouter = apiRouter;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getSecretKey() {
return secretKey;
}
public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}
public String getConfigId() {
return configId;
}
public void setConfig(String configId) {
this.configId = configId;
}
}
- ServiceImpl.java
import cn.flyrise.common.core.exception.CommonException;
import cn.flyrise.pai.attendancestd.config.ApiProperties;
import cn.flyrise.pai.attendancestd.model.vo.IpAddressVO;
import cn.flyrise.pai.attendancestd.service.IIpAddressService;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@Service
public class ServiceImpl implements Service {
@Autowired
ApiProperties apiProperties;
@Override
public IpAddressVO query(String ip) {
final String jsonBody = JSONUtil.createObj().set("ip", ip).toString();
final String timestamp = String.valueOf(System.currentTimeMillis());
// 签名方式为:md5(body + configId + timestamp + secureKey)
final String sign = SecureUtil.md5(jsonBody + apiProperties.getConfigId() + timestamp + apiProperties.getSecretKey());
final String result = HttpRequest.post(apiProperties.getApiServer().concat(apiProperties.getApiRouter()))
.header("X-Client-Id", apiProperties.getClientId())
.header("X-Timestamp", timestamp)
.header("X-Config-Id", apiProperties.getConfigId())
.header("X-Sign", sign)
.body(jsonBody)
.timeout(3000).execute().body();
if (JSONUtil.isJson(result)) {
JSONObject json = JSONUtil.parseObj(result);
if (json.getBool("success")) {
return JSONUtil.toBean(json.getJSONObject("data"), IpAddressVO.class);
}
}
throw new CommonException("1001", "无效的IP");
}
}
简易工具
简易工具访问地址
http://nodeIP:31080默认账号密码
admin 123456
套件查看
- 查看协议套件,以及套件对应的协议信息
协议文档下载
- 提供第三方使用集成中心接入应用时可以按需下载协议文档
应用授权
- 添加应用信息
- 生成
clientId
、secretKey
应用协议关联
- 应用使用到的协议套件进行关联绑定
适配器参数配置
- 选择适配器(根据实际情况选择)
- 配置适配器参数
- 获取
configId
集成中心服务
- 南向协议访问地址
http://nodeIP:31880/open/
- 回调地址配置
- 北向协议访问地址
http://nodeIP:31880/open/notify/
云数据同步
集成中心独立部署后需进行协议套件、适配器数据的同步。
- 同步方式
浏览器访问:http://nodeIP:31081/?k=YYMMDDHHmm
- 数据更新
开发者平台更新了协议套件内容或适配器脚本进行了修改,边端要使用最新的内容则进行更新,更新方式与同步方式一致
- 示例
文档更新时间: 2023-07-30 11:02 作者:管理员