当 Spring Cloud 遇上 SOFAStack | Meetup#2 回顾

SpringCloud和SOFAStack相互替换方案 阅读详情

640?wx_fmt=png

本文作者:玄北(曹杰),蚂蚁金服 SOFAStack 开源组核心成员。
导读:本文根据 5月26日 SOFA Meetup#2 上海站 《当 Spring Cloud 遇上 SOFAStack》主题分享整理,主要来聊聊 spring-cloud-antfin 包含的主要特性及如何使用 SOFAStack 和 SpringCloud 快读构建微服务系统。

现场回顾视频以及 PPT 见文末链接。

| 概念

Spring Cloud 是 Spring 社区开源的一套微服务开发框架,帮助开发人员快速构建分布式应用,Spring Cloud 的官网介绍如下:

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state).

蚂蚁金服从 2007 年开始在公司内部使用 SOFAStack 框架,2014 年基于 Spring Boot 研发了 SOFABoot,2016 年将 SOFAStack 在公有云输出,2018 年 4 月,蚂蚁金服宣布开源 SOFAStack。SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁金服开源的,用于快速构建金融级分布式架构的一套中间件,也是在金融场景里锤炼出来的最佳实践。

SOFAStack [1]:https://github.com/sofastack

SOFAStack 包含以下主要特性:

  • 全面:覆盖多种场景,让用户更加专注于业务开发;

  • 可靠:经历过大规模场景的锤炼,特别是严苛的金融场景;

  • 丰富:包含构建金融级云原生架构所需的各个组件,满足用户场景的现状和未来需求;

  • 开放:兼容开源生态,组件可插拔, SOFAStack 组件与其它开源组件可相互集成或替换。

SOFAStack 开源全景图涵盖了微服务领域的各个方面,同时也积极和业界流行的开源组件结合,包括阿里巴巴集团开源的 Nacos、Sentinel 等,为用户提供更加广泛地选择。

640?wx_fmt=png

SOFAStack 开源已经超过一年,Spring Cloud 作为当下流行的微服务框架,社区用户以及公司内部用户迫切希望能够将这两个优秀的框架进行整合,将 SOFAStack 中间件适配 Spring Cloud 规范也就产生了我们今天的主角——spring-cloud-antfin。

| spring-cloud-antfin 全景图

Spring 官网提供了一份 Spring Cloud 的架构图:

640?wx_fmt=png

从 Spring Cloud 的架构图可以看到,Spring Cloud 框架涵盖了分布式应用开发的方方面面,包括:

  • API 网关 

  • 熔断与限流

  • 服务发现

  • 分布式配置

  • 分布式链路

spring-cloud-antfin 是 Spring Cloud 微服务规范的 antfin 实现,同样的,我们也有一份 spring-cloud-antfin 全景图,涵盖了蚂蚁金服所有中间件:

640?wx_fmt=png

与 Spring Cloud 全景图不同,在 spring-cloud-antfin 中每种分布式组件都有具体的蚂蚁中间件实现:

  • API 网关:SOFAGateway

  • 熔断与限流:Guardian

  • 服务发现:SOFARegistry [2]

  • 分布式配置:DRM

  • 分布式链路:SOFATracer [3]

| 扩展 Spring Cloud

在 spring-cloud-antfin 适配 Spring Cloud 的过程中,我们发现虽然 Spring Cloud 定义了很多微服务规范,但是在具体业务开发过程中,Spring Cloud 还有很多不足,例如 Spring Cloud 对以下能力没有进行规范化:

  • 属性级别动态配置

  • 事务消息

  • Big Table

  • 分布式事务

属性级别动态配置

Spring Cloud 的动态配置基于 RefreshScope 接口,默认 RefreshScope 会对整个 Bean 进行刷新,而且实现自动刷新需要配合 spring-cloud-bus,我们认为与 Apollo、Nacos 等属性级别刷新相比,这个是明显的退步,所以 spring-cloud-antfin 定义一个 DynamicConfig 注解,对于打有这个注解的 Bean,spring-cloud-antfin 支持属性级别动态配置:

@Target({ ElementType.TYPE })	
@Retention(RetentionPolicy.RUNTIME)	
public @interface DynamicConfig {	
}

事务消息

spring-cloud-stream 默认不支持事务消息,但是在金融级场景中事务消息是必不可少的,所以 spring-cloud-antfin 扩展了 spring-cloud-stream 的定义,对事务消息进行了支持:

  • MQ 支持事务:对于使用 MQ 本身就支持事务消息的,spring-cloud-antfin 会在 MessageHeaders 中增加 Transcation 相关属性,以此支持事务消息;

  • MQ 不支持事务:对于使用 MQ 本身不支持事务的,spring-cloud-antfin 支持用本地事件表的模式支持事务消息。

640?wx_fmt=png

  1. 消息发送端在同一个本地事务中记录业务数据和消息事件;

  2. 事件恢复服务定时从事件表中恢复未发布成功的事件,重新发布成功后删除记录的事件。

通过事件恢复服务的不停执行,我们保证了本地事件和消息发送到 Message Broker 必定同时成功或者同时失败。

Big Table

一些 SOFAStack 的使用者,一套代码会在多种技术栈使用,当使用开源技术栈时,Big Table 的实现会使用 HBase,在使用商业技术栈时,Big Table 会使用阿里云的 TableStore [4],为了让用户实现不修改代码在不同技术栈使用,spring-cloud-antfin 会定义一套统一接口,然后让用户针对 spring-cloud-antfin 的接口进行编程,这样在替换底层实现时用户代码不需要修改:


 

  1. public interface BigTableService {

  2. Result get(Get get) throws StoreException;

  3. Result[] get(List<Get> get) throws StoreException;

  4. void put(Put put) throws StoreException;

  5. void put(List<Put> puts) throws StoreException;

  6. void delete(Delete delete) throws StoreException;

  7. void delete(List<Delete> delete) throws StoreException;

  8. ResultScanner getScaner(Scan scan) throws StoreException;

  9. }


分布式事务

目前 Spring Cloud 规范不支持分布式事务,但是分布式事务又是在金融级场景中不可或缺的,spring-cloud-antfin 将集成 Seata [5] 框架,帮助用户更好的解决分布式场景下的数据一致性问题。

分布式事务 Seata 相关介绍:

蚂蚁金服分布式事务开源以及实践 | SOFA 开源一周年献礼

| spring-cloud-sofastack-samples

spring-cloud-antfin 目前已经在内部公测中,预计 7 月份发布,虽然 spring-cloud-antfin 还未发布,但是基于现有开源框架,SOFAStack 和 Spring Cloud 依然可以一起使用,我们提供了一个 Sample 工程用于演示使用 SOFAStack 和 SpringCloud 一起构建微服务系统 —— spring-cloud-sofastack-samples。

spring-cloud-sofastack-samples [6] 是基于 SOFAStack 和 SpringCloud 构建的一套微服务系统,通过此案例工程提供了一个完整的基于 SOFAStack 和 SpringCloud 体系构建的基础工程模型。整个应用的架构图如下:

640?wx_fmt=png

通过此工程,可以帮助用户更好的理解和使用 SOFAStack 开源生态提供的一系列基础框架和组件。这个案例工程中包含了 SOFAStack 开源的大部分组件,包括 SOFABoot、SOFARPC、SOFATracer、SOFABolt 等。同时案例工程还集成了 Spring Cloud 的一些常用组件,包括 Feign、Hystrix、Ribbion、Zookeeper Discovery 等。对于业界的一些优秀开源框架,spring-cloud-sofastack-samples 也进行了整合,例如 Apollo。

| 小结

本文首先分享了 Spring Cloud 及 SOFAStack 的基本概念,然后介绍了这两个优秀框架碰撞之后的产生的全新框架 spring-cloud-antfin。对于 Spring Cloud 提供的一些优秀规范,spring-cloud-antfin 进行了适配,例如服务发现、熔断限流、分布式链路。对于 Spring Cloud 规范中未定义的,但是在开发中必不可少的方面,spring-cloud-antfin 进行了扩展,例如属性级动态配置、事务消息、Big Table、分布式事务。

最后文章还分享了 SOFAStack 最近开源的新工程 spring-cloud-sofastack-samples,spring-cloud-sofastack-samples 是基于 SOFAStack 和 SpringCloud 构建的一套微服务系统,通过此案例工程提供了一个完整的基于 SOFAStack 和 SpringCloud 体系构建的基础工程模型。

SOFA Meetup #2 上海站回顾资料

本文现场回顾视频以及 PPT 地址:

http://t.cn/AiKlmCmE

| 相关 Workshop

640?wx_fmt=png

6月24日(周一)KubeCon China 来了。KubeCon + CloudNativeCon + Open Source Summit China 2019,蚂蚁金服核心技术团队将举办一场全天的 Workshop,给大家分享分布式架构 SOFAStack、Service Mesh、Serverless、分布式事务 Seata 的实践案例,跟大家一起轻松上手云原生技术。

主题:《蚂蚁金服 SOFAStack 云原生工作坊》(KubeCon China 2019 同场活动)
时间:6 月 24 日 9:00-16:30
地点:上海世博中心
注册费:免费

本期活动中,本篇作者玄北也将带来《使用 SOFAStack 快速构建微服务》的主题 Workshop。

基于 SOFAStack 技术栈构建微服务应用。通过本 Workshop ,您可以快速了解并实践在 SOFAStack 体系中如何上报应用监控数据、服务链路数据以及发布、订阅服务。

欢迎点击“阅读原文”,查看活动详细安排以及报名方式~

| 文中涉及的相关链接

[1] SOFAStack:

https://github.com/sofastack

[2] SOFARegistry :

https://github.com/sofastack/sofa-registry

[3] SOFATracer:

https://github.com/sofastack/sofa-tracer

[4] TableStore:

https://www.aliyun.com/product/ots

[5] Seata:

https://github.com/seata/seata

[6] spring-cloud-sofastack-samples:

https://github.com/sofastack/spring-cloud-sofastack-samples

640?wx_fmt=png

SpringCloud项目接入阿里云ACM配置中心 一. 在接入之前我们首先要明白什么是ACM? 应用配置管理ACM(Application Configuration Management)是一款在分布式架构环境中对应用配置进行集中管理和推送的产品。也就是我们所说的配置中心,我们的项目接入后ACM能帮助您集中管理所有应用环境中的配置,降低分布式系统中管理配置的成本,并降低因错误的配置变更造成可用性下降甚至发生故障的风险。 具体介绍见官方网站阿里云ACM配置中心 二. 那么如何正确使用呢?我们直接步入主题 1.首先你需要开通ACM服务,然后进行相应的配置具体 阅读详情

相关推荐

最新版nacos-server-1.2.0.zip 支持mysql 8.0 此版本为win系统下用的

最新版nacos-server-1.2.0.tar.gz 支持mysql 8.0 重新编译Windows系统使用,自己手把手编译

如何利用自己的开发能力在国内创建数字藏品 ----如何在国内创建合约发行数字藏品(nft)

如何自己动手,通过coding方式发行nft。

wuaofei的博客 1077

使用mmdetection快速复现计算机视觉顶会论文

使用mmdetection中支持的算法运行自定义数据集

m0_56896669的博客 2422

蚂蚁中间件介绍:SOFA

所有中间件都是为了解决特定领域的某个问题SOFA解决:分布式下的服务和组件管理以及调用繁琐的问题。

Y 4822

CASS3D实战:高效三维房屋与地形采集绘制技巧

本文详细介绍了CASS3D在三维房屋与地形采集绘制中的高效技巧,包括智能绘房功能、不规则结构处理、特殊构件快速绘制及地形数据采集策略。通过实战案例和进阶操作指南,帮助用户快速掌握CASS3D的核心功能,提升三维采集与绘制效率。

weixin_29216049的博客 867

如何将TDengine集成到Thingsboard?

1 概述 ThingsBoard是用于数据收集、处理、可视化和设备管理的开源物联网平台。它通过行业标准的物联网协议MQTT、CoAP和HTTP实现设备连接,并支持云和本地部署。 ThingsBoard迄今没有导入专业的时序数据库应用,用户可选择的只有PostgreSQL和Cassandra。虽然针对PostgreSQL引入了TimeScale插件,但由于其不是按照宽表的方式组织数据记录,TimeScale的优势根本发挥不出来。总之,这两种数据库不具备高效的数据吞吐能力。 而且,Thingsboard在

Wearable_device的博客 4767

SpringCloud组件(一):feign

1.Feign是什么 Feign是一款Java语言编写的HttpClient绑定器,在Spring Cloud微服务中用于实现微服务之间的声明式调用。Feign 可以定义请求到其他服务的接口,用于微服务间的调用,不用自己再写http请求(eg:使用spring自带的restTemplate或者httpClinents工具构建http请求调用第三方服务接口,在客户端实现,调用此接口就像远程调用其他服务一样,当请求出错时可以调用接口的实现类来返回 Feign是一个声明式的web service客户端,它使得编写

weixin_41821642的博客 1374

头歌MySQL数据库实训答案 有目录

头歌java实训答案集数据库部分一条一条的写,可鼠标手动粘贴,除特定命令外未分大小写。 第1关:创建数据库 第2关创建表 第3关:使用主键约束 第4关:外键约束 第5关:添加常用约束 MySQL数据库 - 数据库和表的基本操作(一) 第1关:查看表结构与修改表名 第2关:修改字段名与字段数据类型 第3关:添加与删除字段 第4关:修改字段的排列位置 第5关:删除表的外键约束 MySQL数据库 - 数据库和表的基本操作(二) 第1关:插入数据 第2关:更新数据 第3关:删除数据 MySQL数据库 - 单表查询(

m0_67401761的博客 4万+

SpringCloud与SOFA RPC性能对比

1 前言 SpringCloud SpringCloud是由XX提供的一系列框架的有序集合,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,可以用Spring Boot 的开发风格做到一键启动和部署。 官网介绍:https://springcloud.cc/ SOFA RPC Scalab...

小学僧的博客 2085

2024全国村级行政边界数据

五级行政区划:村边界数据产品涵盖五级行政区划:(一级行政区)省级行政区共31个其中:(台湾、香港、澳门除外);(二级行政区)地级行政区共334个其中:7个地区、3个盟、30个自治州、294个地级市;(三级行政区)县级行政区共2851个其中:1355个县、117个自治县、49个旗、3个自治旗、363个县级市、962个市辖区、1个林区、1个特区;(四级行政区)乡级行政区共40497个其中:11626个乡、1034个民族乡、20117个镇、7566个街道、151个苏木、1个民族苏木、2个县辖区公所;

J_Giser的博客 3232

基于深度学习的垃圾邮件识别

垃圾邮件的大量存在严重威胁着电子邮件系统的安全和效率。基于深度学习的垃圾邮件识别技术已经成为目前最有效的解决方案之一。本文将详细介绍使用深度学习技术进行垃圾邮件识别的方法,并提供相应的代码实现。 随着电子邮件的广泛应用,垃圾邮件的数量不断增加,传统的规则和统计方法已经无法满足对垃圾邮件进行准确识别的需求。深度学习技术以其强大的模式识别能力和自动特征提取能力成为解决垃圾邮件识别难题的有效工具。

一键难忘的博客 1093

springcloud 图片和数据一起提交_当 Spring Cloud 遇上 SOFAStack | Meetup#2 回顾

本文作者:玄北(曹杰),蚂蚁金服 SOFAStack 开源组核心成员。本文根据 5月26日 SOFA Meetup#2 上海站 《当 Spring Cloud 遇上 SOFAStack》主题分享整理,主要来聊聊 spring-cloud-antfin 包含的主要特性及如何使用 SOFAStack 和 SpringCloud 快读构建微服务系统。现场回顾视频以及 PPT 见文末链接。概念Spring...

weixin_39874366的博客 125

Open3D KD-tree的使用【2025最新版】

Open3d使用FLANN构建KDTree以便进行快速最近邻检索。博客长期更新,本文最近一次更新时间为:2025年1月1日,代码已同步更新至Open3D 0.18.0版本。

点云侠的博客 40万+

搭建springBoot+springCloud项目

在Java开发分布式领域,有阿里巴巴的dubbo和springCloud的两种比较出名,但是随着springBoot这种开箱即用的模式广泛传播。springCloud越来越广泛。所以掌握springCloud现在也成为必备的东西。 确定版本 下面我们就基于如下版本开发。 // 定义变量 springBootVersion = '2.0.1.RELEASE' ...

wszhm123的博客 1552

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【Spring Cloud】SpringCloud接入SOFARegistry

由于我们的SpringCloud版本是2020.x.x是无法和上面的trace兼容,tracer-enterprise-sofa-boot-starter使用的负载是ribbion,但是高版本的Spring Cloud使用的loadbalance是。instanceId是一个固定的值,我理解类似于Nacos的namespace,由于当时我们理解错了instanceId,我们当时理解为就是一个实例id,约等于spring.application.name。2.引入官方提供的pom,当前最新版本为1.2.8。

极客中年的博客 1290

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

浅谈阿里巴巴蚂蚁金服SOFA微服务开源框架

前言: 提到分布式、微服务,大部分人首先想到的可能是SpringCloud、Duubo等主流框架,但事实上在SpringCloud还未出现之际,蚂蚁金服内部就已经有了一套比较完整的金融级分布式架构Sofa,并且到目前为止,经历了大大小小比较完善的闭环金融场景,如双十一、双十二等。说来也惭愧,之前并未关注到Sofa早已开源,所以一直不敢发布有关Sofa的相关文章,如果对Sofa知之甚少的小伙伴,接下来就和我一起进入一个新世界:Sofa分布式微服务架构。 1.Sofa结构图: ...

weixin_42070918的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SOFA 相关框架你有没有听过?

一、 前言 1、什么是 SOFA? SOFA 是 Simple Object-oriented and Flexible Architecture 的简称,是阿里巴巴国际技术事业部自研的专门针对复杂业务场景的应用架构 SOFA是蚂蚁自研的一套金融级分布式中间件,目前正在逐步向业界开源。SOFA的全称有两个,最早是Service Oriented Fabric Architecture,即面向服务的架构。随着2018年的开源,其全称改为Scalable Open Financial Architectur

欢迎来到 ABin-阿斌的博客:写一生代码,创一世佳话,筑一览芳华。 2797

soringboot+Springcloud微服务搭建

一、参考网址 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建 https://blog.youkuaiyun.com/guokezhongdeyuzhou/article/details/79653159 二、注意事项 应该创建三个工程 1、服务发现者 @SpringBootApplication @EnableEurekaServer public cla...

鸿鹄的博客 1331

springboot bootstrap 开源框架_蚂蚁金服开源Spring Boot增强框架SofaBoot-金融级分布式架构...

SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFA 中间件的能力。 SOFABoot 3.0.0 已经发布,该版本基于 Sprin...

weixin_39732640的博客 464

SOFAStack 的下一个五年

文|宋顺(GitHub ID:nobodyiam)SOFAStack 社区开源负责人蚂蚁集团高级技术专家本文3861字 阅读11分钟#01回顾开源这五年回想起 2018 年 4 月 19 日 SOFAStack 首次开源,当时的官宣文章中就提到了我们开源的初心:期望通过逐步向社区开源 SOFA 中各个组件,从而一方面帮助更多机构和合作伙伴完成金融分布式转型,帮助大家更加快速构建稳定的金融...

金融级分布式架构 732

SOFA Weekly|Koupleless 社区会议回顾、SOFA 聊天室、本周社区贡献、本周推荐阅读...

SOFA WEEKLY | 每周精选筛选每周精华问答,同步开源进展欢迎留言互动~SOFAStack(ScalableOpenFinancialArchitecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控...

金融级分布式架构 249

SpringCloud使用Sofa-lookout监控(基于Eureka)

本文介绍SpringCloud使用Sofa-lookout,基于Eureka服务发现。 1.前景 本文属于是前几篇文章的后续,其实一开始感觉这个没有什么必要写的,但是最近一个朋友问我关于这个的问题,所以想着还是写一篇基于Eureka监控使用Pormetheus监控Sofa-Lookout监控的文章。 前几篇文章请看: 《SpringBoot使用prometheus监控》 《SpringBoot...

weixin_34413103的博客 302

《重新定义Spring Cloud实战》

---- Spring Cloud中国社区(http://springcloud.cn)是国内首个基于Spring Cloud微服务体系创建的非盈利技术社区。自2016年创建以来,在北京,上海,深圳,成都等地举办了多次技术沙龙,提供技术交流平台,帮助数万开发者快速学习Spring Cloud并用于生产。为更好的推动Spring Cloud在中国的发展,让更多的开发者受益。社区针对Spring Cl...

Lovnx 1万+
上一篇: 蚂蚁金服微服务实践 | 开源中国年终盛典分享实录
下一篇: 溢米教育推荐平台的效率与稳定性建设 | SOFAStack 用户说
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值