北京云栖大会Tech Insight Workshop:《使用微服务框架快速构建一个分布式交易系统》篇

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 本篇是北京云栖大会Tech Insight Workshop金融云主体《使用SOFA来快速构建金融级分布式交易系统》中的一个组成部分,用来介绍如何通过SOFA Boot来快速构建一个分布式微服务系统,以及如果通过金融云下中间件微服务产品来进行查看与管理。

背景介绍

本篇是北京云栖大会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
目录
相关文章
|
2月前
|
Dubbo Java 应用服务中间件
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
100 0
|
2月前
|
负载均衡 监控 Dubbo
Java微服务架构设计与实践:构建可伸缩的分布式系统
【4月更文挑战第2天】微服务架构响应现代业务需求,通过拆分大型应用为独立服务实现模块化和可扩展性。Java中的Spring Boot和Dubbo等框架支持服务注册、负载均衡等功能。遵循单一职责、自治性和面向接口原则,每个服务专注特定逻辑,独立部署运行。实际项目中,如电商系统,服务按功能拆分,提升可维护性和扩展性。还需考虑服务通信、数据一致性和监控等复杂话题。Java微服务架构助力构建高效、灵活的应用,应对未来挑战。
Java微服务架构设计与实践:构建可伸缩的分布式系统
|
19天前
|
负载均衡 监控 Go
使用Golang框架构建分布式系统
本文探讨了使用Golang构建分布式系统的方法。Golang因其高效、简洁的语法和并发支持成为理想的开发语言。文中列举了几个常用的Golang框架,如Echo、Gin、gRPC和NATS等,并强调了服务拆分、通信机制、负载均衡等构建分布式系统的关键要素。通过选择合适的框架,遵循需求分析、技术选型、服务设计等步骤,开发者可以构建出高性能、高可用和可扩展的系统。此外,文中还提供了一个使用gRPC和etcd的简单代码案例来说明实现过程。
36 4
|
2月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
298 0
|
18天前
|
消息中间件 监控 调度
构建Python中的分布式系统结合Celery与RabbitMQ
在当今的软件开发中,构建高效的分布式系统是至关重要的。Python作为一种流行的编程语言,提供了许多工具和库来帮助开发人员构建分布式系统。其中,Celery和RabbitMQ是两个强大的工具,它们结合在一起可以为你的Python应用程序提供可靠的异步任务队列和消息传递机制。
|
3天前
|
存储 分布式数据库 数据库
深入OceanBase内部机制:分区构建高可用、高性能的分布式数据库基石
深入OceanBase内部机制:分区构建高可用、高性能的分布式数据库基石
|
2月前
|
存储 JSON 监控
Erlang用于构建分布式屏幕监控软件的优点
Erlang是一种适用于并发编程的语言,特别适合构建分布式屏幕监控软件。其轻量级进程支持高并发,能同时处理多个屏幕的实时更新。Erlang的容错性和高可用性通过监督树机制保证了进程故障时的自动重启。此外,其内置的分布式特性使得跨节点的屏幕监控变得简单。Erlang还允许通过HTTP客户端库自动将监控数据提交到网站,便于数据存储和分析。因此,Erlang是构建此类软件的理想选择。
119 7
|
2月前
|
存储 Oracle 关系型数据库
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
58 0
|
2月前
|
传感器 存储 SQL
LabVIEW使用ModbusTCP协议构建分布式测量系统
LabVIEW使用ModbusTCP协议构建分布式测量系统
30 4
|
2月前
|
消息中间件 大数据 分布式数据库
分布式事务:构建可靠分布式系统的基石
【4月更文挑战第21天】分布式事务是确保现代分布式系统数据一致性和完整性的关键技术,涉及多服务协调,面临网络延迟、故障和数据一致性等问题。本文探讨了分布式事务的原理,包括两阶段提交、三阶段提交、分布式锁和补偿机制等解决方案,并阐述其在微服务、分布式数据库和消息队列等场景的应用。面对挑战,我们需要持续优化分布式事务处理机制。

热门文章

最新文章