表达式8/4*(int)2.5/(int)(1.25*(5.6+2.4))的值为?

从大学毕业5年,一直努力学习,努力工作,追求新技术,不保守。
上个月我来到一家新公司上班,月薪20K,这家公司老板人很好,对员工很关爱,公司氛围不错,同事们也努力把公司项目搞搞好。除了那个混日子的10年开发经验的老王(老板小舅子)
由于老板对客户比较负责,业界口碑好,公司的项目越做越大,单子也越来越多,但是很多客户项目要求分布式微服务,因为大部分是金融外贸项目,搞了微服务后,偶尔出现分布式事务不一致性问题,客户很是反感,前段时间,公司用TCC试水,发现这个方案代码侵入性太强,维护也不方便,人工投入太大,也容易编码出错。
后来用基于RocketMQ消息队列实现可靠消息最终一致性方案代替,能实现要求,比TCC好维护点,但是实现起来,终究得依赖消息中间件,而且逻辑也有点繁琐,公司项目涉及到得分布式事务模块还是很多的,搞得天罗地网似的。
公司急于寻求一种简单快捷高效的低代码侵入式的分布式事务解决方案。
作为新技术控,我一直关注新技术,最近2年,阿里分布式事务解决方案Seata很火,人气很足!


    
  • @company 南通小锋网络科技有限公司

  • @company 南通小锋网络科技有限公司



  • @company 南通小锋网络科技有限公司

  • @company 南通小锋网络科技有限公司

  • @company 南通小锋网络科技有限公司



  • @company 南通小锋网络科技有限公司

  • @company 南通小锋网络科技有限公司

  • @company 南通小锋网络科技有限公司

  • @company 南通小锋网络科技有限公司



  • @company 南通小锋网络科技有限公司

  • 账号接口feign远程调用

  • @company 南通小锋网络科技有限公司

  • @company 南通小锋网络科技有限公司

    • 下单 1,创建订单 2,账户扣钱



我们用windows演示,下载

seata server所有的配置都在conf文件夹内,该文件夹内有两个文件我们必须要详细介绍下。
seata server默认使用file(文件方式)进行存储事务日志、事务运行信息,我们可以通过-m db脚本参数的形式来指定,目前仅支持file、db这两种方式。

该文件用于配置存储方式、透传事务信息的NIO等信息,默认对应registry.conf文件内的file方式配置。

seata server核心配置文件,可以通过该文件配置服务注册方式、配置读取方式。

这里事务分组概念,我们最后单独讲,主要是为了集群故障的时候,能快速切换,实现高可用;

7.2 每个数据库都建一个undo_log回滚日志表

我们只需要在seata-common公共模块项目里添加seata依赖,其他子模块都有了,方便;

7.4 项目里配置seata分布式事务

首先是每个项目都要配置seata支持,请求seata-server,根据配置;

主要多了服务分组和集群分组的配置:

7.5 分布式案例测试

因为是执行是一瞬间的,很多小伙伴根本无法感受到内部的二阶段提交过程。

  • 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
    • 提交异步化,非常快速地完成。
    • 回滚通过一阶段的回滚日志进行反向补偿。

再次postman测试,我们立刻查看db_order数据库表信息(比较难捕获,因为提交事务超时就立刻回滚,看不到信息)

订单服务执行完的时候,

说明一阶段业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。

然后下面,如果提交事务超时或者有接口调用异常,则分支事务立刻根据回滚日志,立刻进行反向补偿,最后回滚日志会被清空;

如果接口调用一切正常,日志清空,全局事务提交,完成本次事务操作;

seata默认事务支持是file文件存储,不怎么好,不方便查看和管理;所以我们一般是db存储;

然后下方mysql配置改成你们对应的配置即可,数据库要自己先建立,比如我这边定义是db_seata


因为都是临时数据,最终提交事务会被清理,我们要看数据的话,还是需要服务代码里打断点,debug进行捕获;

下面这个是锋哥捕获到的一个数据;

Seata支持注册服务到Nacos,以及支持Seata所有配置放到Nacos配置中心,在Nacos中统一维护;

因为我们Nacos没有开启认证功能,所有不需要用户名密码,最终配置如下:

作为Nacos配置中心,我们需要把seata的一些配置上传到Nacos,配置比较多,官方给了我们一个 config.txt 我们修改后,上传到Nacos。

修改好的文件,放seata目录下:

之后运行仓库中提供的nacos脚本,将信息提交到nacos控制台,如果有需要更改,可直接通过控制台更改

注:命令解析:-h -p 指定nacos的端口地址;-g 指定配置的分组,注意,是配置的分组;-t 指定命名空间id; -u -w指定nacos的用户名和密码,同样,这里开启了nacos注册和配置认证的才需要指定。

我们会发现Nacos配置中心就有seata的配置了;

这样,我们的seata配置就可以在nacos维护了,很方便;

我们要重新启动seata-server,以及重启三个项目,用postman测试,测试OK;

事务分组是seata的资源逻辑,类似于服务实例。在file.conf中的my_test_tx_group就是一个事务分组。

通过事务分组如何找到后端集群?

  1. 程序会通过用户配置的配置中心去寻找service.vgroupMapping .[事务分组配置项],取得配置项的值就是TC集群的名称
  2. 拿到集群名称程序通过一定的前后缀+集群名称去构造服务名,各配置中心的服务名实现不同
  3. 拿到服务名去相应的注册中心去拉取相应服务名的服务列表,获得后端真实的TC服务列表

为什么这么设计,不直接取服务名?

这里多了一层获取事务分组到映射集群的配置。这样设计后,事务分组可以作为资源的逻辑隔离单位,出现某集群故障时可以快速failover,只切换对应分组,可以把故障缩减到服务级别,但前提也是你有足够server集群。

假如看帖子还有点吃力的话,锋哥专门录制了一套配套视频教程,附带配套源码文档;
视频教程高清 非A&V画质;
锋哥视频一贯风格,通俗易懂,无废话,不浪费大家时间和精力,省点时间晚上去把妹!

如需【 seata视频教程+文档+源码 】可以关注【 java1234 】微信公众号,关注后回复【seata】领取
不会上面操作的,可以加锋哥WX:【 java3459 】 领取

感谢CSDN和CSDN小伙伴的支持,下期更精彩,敬请期待!

记得点点锋哥的CSDN博客【关注】哦!

}

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 表达式34/5的结果为 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信