背景介绍
本篇是北京云栖大会Tech Insight Workshop金融云主体《使用SOFA来快速构建金融级分布式交易系统》中的一个组成部分,用来介绍如何通过SOFA Boot来快速构建一个分布式微服务系统,以及如何通过金融云下中间件微服务产品来进行查看与管理。
DEMO整体架构与说明
image
在本篇中,会逐步引导学员借助SOFA Boot来创建【支付】服务(Core工程)和【交易】平台(Web工程),并且【支付】对外提供RPC服务,供【交易】平台进行调用,以及如何借助金融云进行应用的发布部署。
实验涉及SOFA产品
详细教程
创建支付服务和交易平台Web工程
看到下图则表示构建成功:
image
- 通过IntelliJ IDEA导入已创建的工程
image
注意:在导入向导中选择JDK1.8作为运行时环境。此外一直点击Next即可
- 工程使用facade范式,在com.alipay.sofa.pay.facade下创建model,并创建PayOrder.java,并复制DEMO源码中对应路径下的文件内容
core_create_facade_mo_del
- 创建PayService接口
core_create_facade_payservice_interface
- 在com.alipay.sofa.pay.service下创建接口的实现类,目前尚未引入持久化层,所以这里接口的实现先返回mock数据core_create_service_impl
- 截至目前,支付服务的程序实现部分已经初步完成,需要将刚设计的接口通过bean方式进行对外暴露,修改pay-demo-service的pay-emo-service.xml
core_create_service_publish_bean
- 由于该服务会通过金融云进行发布,所以需要增加如下配置core_create_service_app_properties
注意:
run.mode=NORMAL表示需要在金融云上发布/访问RPC调用
com.alipay.env=shared表示使用共享型中间件
com.alipay.instanceid在【金融云首页】-【产品与服务】-【中间件】-【中间件控制台】中的"实例标识"获得。
- 删除test目录,该目录对本DEMO无用,并有可能会导致运行失败(core范例工程版本更新维护等原因)
core_delete_test
- 在保证本机maven环境设置好的前提下,开始编译支付服务
core_compile_need_setmvnreadyfirst
构建成功,生成 【fat jar】
core_compile_done
- 开始构建【交易】平台Web服务,参见SOFA Boot创建Web工程
web_create_1
- 通过IntelliJ IDEA导入已创建的【交易】平台工程
web_import_1
- 引用刚刚创建的【支付】服务RPC,帮助信息可以参照该文档
web_refer_bean
- 删除工程中自动生成的index.html
web_delete_indexhtml
- 将DEMO范例中的静态文件和模板通过IDE移动进当前工程
web_move_static_subfolder
web_move_template
- 删除工程中自动生成的主类,并通过IDE移动DEMO范例代码中对应的主类至对应目录
web_delete_applicationmain
web_copy_applicationmain
- 通过IDE将DEMO范例代码中对应的com.alipay.demo下所有文件移动至项目对应路径
web_copy_application_subfolders
- 保证下列依赖包在工程中被正确引入
image
- 设置金融云上环境(参数含义参照支付服务创建过程)
web_app_properties
- 请确认当前工程下test目录已被删除
- 编译并生成【fat jar】
注意:由于之前修改了主类,所以在编译后的运行时可能会由于IDE原因出现主类无法找到的情况,这时需要重启IDE并重新进行编译,一般即可解决问题
web_compile_done
- 接下来就是需要在金融云上构建应用,并上传已编译好的jar包
金融云上发布已创建的SOFA Boot应用
- 登录金融云,选择合适的环境
core_upload_login_antcloud_workspace
- 新增支付服务的应用:进入【产品与服务】-【应用管理】,【新建应用】并输入对应的应用信息
webcore_antcloud_create_app_1
webcore_antcloud_create_app_2
- 点击【确定】完成新应用的添加
webcore_antcloud_create_app_done
- 同样的方式添加支付平台的新应用,【应用名称】设置为"DEMO-web-console",其他设置与支付服务应用相同(技术栈:sofa-lite2 1.0.1)。
- 在【产品与服务】-【环境资源管理】中添加2台ECS,分别分配给【DEMO-pay-core】和【DEMO-web-service】
webcore_antcloud_createecs_bindingapp1
webcore_antcloud_createecs_bindingapp2
webcore_antcloud_createecs
分配给【DEMO-web-service】
- 在将应用与计算资源分配完毕后,进入【产品与服务】-【发布部署服务】-【发布包管理】,为对应【DEMO-pay-core】和【DEMO-web-service】两个应用添加发布包
webcore_antcloud_deploymanage_core
- 上传支付服务fat jar
webcore_antcloud_deploymanage_core_upload
- 上传交易平台web的 fat jar
webcore_antcloud_deploymanage_web_upload
- 在【产品与服务】-【环境资源管理】中创建负载均衡,并将创建好的负载均衡挂载交易平台web服务的ECS
image
image
- 至此,访问该台负载均衡的公网地址,以及开放端口,则可以看到发布的服务,表示【DEMO-pay-core】和【DEMO-web-service】均发布成功,且RPC调用正常
image
通过中间件微服务产品对已发布的分布式服务进行管理
- 点击【产品与服务】-【中间件】-【微服务】进入控制台
image
- 定位已发布的RPC服务
image
- 查看分布式服务之间的调用关系
image