挨踢部落坐诊第十七期:分布式事务处理及前后端分离部署问题

原创
新闻 分布式
挨踢部落是为核心开发者提供深度技术交流,解决开发需求,资源共享的服务社群。基于此社群,我们邀请了业界技术大咖对开发需求进行一对一突破,解除开发过程中的绊脚石。以最专业、最高效的答复为开发者解决开发难题。

 活动说明:挨踢部落是为核心开发者提供深度技术交流,解决开发需求,资源共享的服务社群。基于此社群,我们邀请了业界技术大咖对开发需求进行一对一突破,解除开发过程中的绊脚石。以最专业、***效的答复为开发者解决开发难题。

话题关键词:分布式/微服务框架/前端/iOS

部落阵容:51CTO社群智囊团

面向对象:Java开发工程师、PHP开发工程师、数据库开发工程师、运维工程师

参与方式:加入51CTO开发者QQ交流群(669593760),有任何技术问题,在群里提问,或发给群主小官。

活动详情


java-老徐-北京:分布式系统中,事务是怎么解决的大佬们,分布式事务不是有很多补偿方案吗,我用的17.3。我本来那项目就是垂直架构的,然后面试的大佬问我项目中事务是怎么解决的,我就按照我那项目说的,然后他就问我业务是怎么拆分的...我就说我是垂直架构的,然后凉凉了就。

java-晨晨-上海:用redis的set原子特性,或者memmcache的add原子特性,redis和memmcache都可以分布式。我简单的写一下方案,你是说事务一致性已经解决了。

这就是redis的分布式锁。但是释放锁,因为含有if语句和del,他们不是原子的,要做一下处理。事务就是这样控制的哇,当为0的时候,就是没获取到锁,等待,或放消息队列,我觉得为0的时候,应该存到redis里面,等获取到锁的时候再执行。你说垂直切分了业务,那肯定就是把订单和库存分成了两个服务,两个微服务,自己挖了一个坑,跳进去了。我看很多面试题,垂直切库就是把关联少的业务表切到不同的数据库里面,类似库存和订单,分两个库,然后印出了分布式事务的问题。强一致性是不存在的,他想问,消息队列,把消息放消息队列,让消费方去拉取,库存这东西用最终一致性,不保证实时一致性,但是可以保证最终一致性,支付宝就是这个套路,你通过花呗还信用卡,上面一行小字:最晚明天12点之前到账,就是存消息队列了,然后消息队列逐一处理。因为啥时候到账,支付宝是不知道的只给你了最迟到账的时间点。参考为什么分布式一定要有Redis? https://mp.weixin.qq.com/s/6t_D-3qNpUuEJguNq4sIyw


软件开发-武汉-薛定谔的猫:想问下 ,有没人做过网站前后端分离部署的,一般中小型网站,前后端代码在一个服务器。现在做武汉市发改委的项目,要求前后端,代码分开部署。

1>北京-架构师-二哥:可能我是传统行业,我们这边一般都分开。

2>java-庞坤-上海:看情况,如果前后端不是同一个人做一般都会分开,即使对性能考虑也应该分开。

3>PHP-广州-i:...走json。


前端-小虎-北京:怎么从 A页面跳到B页面,并同时执行B页面的函数,前端实现。

1>Java-蓝枫-北京:转发,B页面load事件。

2>西安-steven-前端:window.open实现页面跳转、onpageshow执行函数。


深圳-java-从志:各位大佬们问个问题啊,String类这个算法计算散列码,为什么31* hash+ cahrat(i),为什么是乘以31,怎么不是乘以30,或者其他整数?

JAVA-格子衬衫°-北京:好像是质数都可以,不是质数哈希值会有重复的,但是为什么是31不是17我也不太清楚,你可以百度下,你可以乘以37或者61试试,来生一百个哈希值,看看会发生什么事。源码可以直接拿来用,源码满足不了你可以直接改源码,其他地方不受影响就可以,反正又不犯法,参考:

https://blog.csdn.net/tayanxunhua/article/details/20525251#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1


JAVA-格子衬衫°-北京:有没有人遇到过微信JSSDK注入权限,因为iOS路由的原因获取url错误导致签名校验失败的问题,做公众号,需要在页面注入权限来使用微信的JSSDK调起相机和相册,就那个wx.config方法,传入得参数都是正确得,签名也是用微信官方的签名校验工具没问题,但是实际使用得时候安卓可以,iOS显示签名错误。后来发现是签名里的URL与JSSDK在IOS里获得参与校验的URL不一致,JSSDK在IOS得微信客户端里获取的URL总是当前URL记录得上一条历史记录,就是URL1--->URL2---->URL3(需要注入权限得页面)。iOS微信客户端得JSSDK总是取得URL2,而我们需要注入权限参与得URL却是URL3,所以总是对不上,报签名错误。

1>广州-小星星-PHP:呃,使用JSSDK,微信官方有文档的不好用?

2>JAVA-格子衬衫°-北京:自己解决了,iOS微信客户端JSSDK注入权限只需要给首页地址注入就可以,不需要每个页面都注入,因为不论你跳到哪个页面,iOS微信客户端的JSSDK获取的校验URL只是***次进去的主页地址,跟安卓区别太大。当保证注入权限时参与的字段与值正确,签名正确,安卓和iOS效果不相同就要考虑对应操作系统的差别。


北京-老米屋-Java:请教一下问题,像用Java那些微服务框架,是否支持集成由其它语言开发提供的RESTFUL 标准接口,支持的框架有那些?,如果你不知道,要是身边有做Java帮我问问。

web全栈-Lee-济南:restful是基于HTTP协议的,绝大多数的语言都支持(只要支持socket通讯)要实现的就是HTTP服务端与客户端,好不好用,就看这个语言对应的HTTP库好不好用了。


java—凌乱—重庆:请教一个问题,为什么我访问百度就行,访问自己的服务就不行呢,没有拦截test2可以直接访问,用 restTemplate就访问不了,我想做个restful风格的资源访问 + 处理业务逻辑的http接口结合,有证书但域名不对,他会提示你访问有风险。我试试取消https协议还是不行。取消了https,直接可以访问,使用restTemplate不能访问,使用restTemplate可以访问百度。

北京-unicorn-数据:用 Django restframework 搭建一个restful 环境试试:https://blog.csdn.net/rongyongfeikai2/article/details/50322769

http://www.django-rest-framework.org/ 官网,restful与普通的http协议完全不同啊,你本地没环境,自然测试不了哦。你是java,刚才给的是python,这个是java环境
https://blog.csdn.net/dfgrgegsezgzs/article/details/62427870是协议不同,请查restful与http的区别,能访问百度是百度支持呗,可以判断客户端的访问流,分配给响应协议的服务器。


Linux~A00张江男~长沙:请问下,那个戴尔的服务器怎么进Raid卡?怎么进Raid卡去查看里面的信息?Dcs6130型号的。主要是不晓得在哪个界面按,是开机就按吗,还是有界面限制的?

1>服务器-泊头-冯健:ctrl+r的居多,自检的时候会有。

2>python-唐思雨-昆明:提问的时候适量配上图文,将问题描述清楚,更有利于群友帮你解决问题哦。


Java—长沙—小刘:有没有前端大佬,为什么通过jQuery像div里面加内容,本来在这个div后面显示的内容跑到前面去了,为什么啊? 就是两个div,前面那个div的内容会不断添加,然后跨过后面一个div,以至于后面div无法显示在***, 通过jquery不断的添加。

广州-小星星-PHP:父div限制了高度?是的话,设置父div的滚动属性看看。


云计算/运维-昌平 :cloudstack和openstack有多大区别?

Java-向问天-北京:一个稍微轻量一些,一个比较全面一些,百度资料很多,给个链接吧, https://zhidao.baidu.com/question/938076178674573692.html各有千秋,需要干嘛用,结合业务综合考虑吧。


Java—长沙—小刘:问一下Python可以作为胶水语言在JSP中运行吗?你们用Python与那个语言整合?

c++/py-taniey:应该是有jython 可用,不过没试过。我用的是CPython。


广州-小星星-PHP:现在有个问题,git client都要求在***次commit的时候设置 user.name & user.email,commit的log能够看到这个信息,问题来了,这里并不涉及push所用的账号,那能否在gitlab服务端看到是哪个账号push的这些commit呢?

深圳-王明-后端开发:gitLab显示你自己设置的email,user.email 和 user.name,是账号的email 在log点击直接显示gitLab相关的用户 不是的话 name那会显示你设置的邮箱。user.email 跟 push 代码的账号 相同 点击的话 就是调到这个gitlab的对应的用户,不同的话 点击就是发邮件。就这么点区别,你能不能push代码 是你的ssh-key认证决定的。


后端+陈医生+北京:有VUE大神没?两次请求数据之间间隔了5秒,想去掉这5s。中间间隔非常麻烦。他执行完了直接发起了ajax请求,但是稳定有5秒延时,但是没有setTimeout或者是aetInterval。

1>php-linux-Mr-北京:代码不是从上到下运行吗, 这5秒中间的 是处理的时间呢。

2>运维-本初网络-西安:异步。


web开发-阿牛-北京:问个问题,@RequestMapping("/category")&@RequestMapping("category")这个注解里面,斜杠啥时候加?和这个斜杠有关系吗?

1>后端-猫二爷的旅行-北京:spring mvc,一直都加。requestMapping是一个用来处理请求地址映射的注解, 表示类中的所有响应请求的方法都是以该地址作为父路径这个注解用于类或方法, 你可以理解为stringbuffer 拼接一个url字符串。

2>深圳-Richie-java:斜杠加不加都一样,没有关系,这个只是启动后跳转的路径。


码工-TimFu-广州:请教下: java.lang.IllegalStateException: No cache could be resolved for 'Builder[ ] caches=[] | key='' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false'' using resolver 'org.springframework.cache.interceptor.SimpleCacheResolver@77376bcf'. At least one cache should be provided per cache operation.   ehcache报错了。

spring boot 整理ehcache3 报错,在程序demo里是正常的,但移到项目里,报这错了!

1>广州-小星星-PHP:看字面意是缓存问题。

2>计算机-您好-湘:看在哪个环节出错仔细测试看看。

3>java-zero-北京:参数传递异常,看下是不是参数传递不合法,  有可能是jdk 和 spring 的版本 的问题。

4>北京-JAVA-牧:参数错了,重配缓存。


运维-本初网络-西安:有 angular 大神么?  问个动态异步加载模块的问题。通过systemjs加载远程umd规范的js模块,如何注入到angular中。

Java_麦克_北京:在reque体里面定义angular即可,注意唯一性。


PHP-波仔-广州:请教个问题,大家做支付借口时同步接口返回的数据需要做验签吗,另外支付结果接收同步返回的还是支付后用查询接口去查询详细信息好些?

济南-抓娃娃-Lee:看下接口文档吧。用户端应该有个回调,用户点击后,返回系统。管理后台是异步消息推送,写个servlet接收下。我记得是这样的,忘记是支付宝还是微信支付了,用户端的回调路径是在请求参数里配置的。


Linux&oracle-S.H.I-成都:各位亲,有没有人知道如何将ssh -V 的输出结果保存在文件中的?或者通过其他方式查看openssh的版本的。linux下追加不到文件中,直接将输出结果打印到屏幕上了。

产品~阿当~上海: > d:\1.txt


北京-任煜烽-测试:QT究竟是不是跨平台的好选择?

1>web-老九-合肥:不一定是。这个可以,但是也有不少坑。

2>西安-本初-node:不是,electron 了解一下。vscode和钉钉桌面版就用这个。


江西--asp.net:react native image.getsize用不了,有人知道原因吗?报错,java.lang.doulble can not be cast java.lang.string,我想得到图片的宽度,然后做等比缩小,可是这个函数报错。我在react native中想获得图片的大小,在componentdidmount中使用了image.getsize函数,就报错。

广州-小星星-PHP:按上文的字面意,你可以使用  String val = String.format("%s", numberOrStringVal);字面意是变量数据类型转换错误,那这一段是你业务代码里的报错还是某个框架层面的,前者调整下,后者看看传参有无错误。自己写的代码,就调整一下,框架层面的,就调整一下传参。


北京-小徐-java:有木有免费的orc识别接口,eg:快递单号,识别快递单的,个人玩的,扫描枪好像木有免费的吧,PC上的图片。

1>java-向问天-北京:ocr识别吧,看一下百度云的图片识别接口,二维码过条形码扫描,二维码的话,支付宝里的jsapi支持条形码,但需要支付宝容器里操作,具体在支付宝开放平台里搜jsapi。

2>深圳-王明-后端开发:或者微信也可以,微信的JSSDK支持唤起扫一扫。

3>web全栈-Lee-济南:orc的能力也是有限的。更何况手写的(是任何人手写的吗),现在证件识别效果挺不错了。如果是特定人手写的也可以,快递单号是机打吧。


java-大神-北京:我遇到个问题,就是spring data使用postgresql数据源,怎么使用他的jsonb数据类型,有没有弄过的,网上教程都搜了还是有问题?

Java_麦克_北京:百度是个好东西,https://blog.csdn.net/u014087707/article/details/62910638


Linux-shanghai-carol:请问一下,在 Linux上对于中小型企业自动部署方面的软件有没有推荐的呀?自动部署一些配置文件,用户环境,这种日常管理,ansible类似,puppet。

1>西安+张恺+网络工程师:你可以摸索着试试docker,好像有这方面功能。

2>java大数据_青岛:zstack。


软件开发-武汉-薛定谔的猫:有人遇到过吗?阿里云说让我上传图片,用二进制方式,我就是用的普通 POST表单提交方式啊。我用的 uploadify。图片应该是,直接以临时文件上传到服务器的吧。难道 我在后台 还要对 图片 用程序转码?我现在是后台上传也会乱码。

1>Java-漫-北京:enctype="multipart/form-data",这个写了吗?

2>北京-架构师-二哥:binary,然后再传。使用普通的ftp,运行binary,然后扔进去看看,如果没问题你就研究你的工具,如果一样有问题,那阿里给的信息就不对

3>PHP-广州-i:排除法嘛,换个工具试一下。你换个工具,如果还会就看看后端接口。


软件开发-武汉-薛定谔的猫:问大家一个问题 ,百度云啥的有没有什么服务,可以让网页播放的视频不能被观看者录屏??

1>架构师 周威 北京:没有,录屏盗取,目前没听说有呀。

2>云计算-广州-嘿嘿:录屏是本地行为,没法制止的,除非像腾讯游戏一样,检测外挂装置那种的。


重庆-运维-无尘:请教运维大佬一个问题呢。这个要求一个CA 一个证书,一个私钥。但我在Godaddy上购买的证书只有一个证书一个私钥... ca证书这玩意儿从那里来?

1>Java-黑子-北京:Cfca。

2>重庆-运维-无尘:已经解决了,解决方案是购买的域名证书里是二合一的证书,***段是关于域名的,第二段是关于ca的,分离出来就好。


北京-晶晶-lT:文件共享,我现在有台电脑共享文件,让其他的人只可以访问,不能修改怎么设置?就是简单的局域网共享,几个人,共享一个文件。我的电脑现在就是按照这个设置的,别的电脑还是可以随意的更改我共享的文件。

1>c++/py-taniey:可以,当然可以,要不就是你们网络没设置成可发现,这样设置,或者你搭个ftp 服务器。

2>北京-蜻蜓-java:人应该就不能修改了吧,闲了可以再试试其他的方法,或者使用飞秋共享。


运维-IT超哥-北京:请教个问题,我有6块硬盘,其中一块做了系统。剩下5块做raid0然后想挂载根目录下,但是挂载之后大小不增加。查看/etc/fstab有挂载的。能不能将它注释掉?

1>运维-赫-北京:更目录要是挂在上了,数据都没了啊,我觉得你挂载的目录换一个试试比如 /data

2>Java-黑子-北京:不能挂根下,只能挂到某个目录下,根在你创建系统的时候,相当于有一个硬盘已经挂在根下了。你新的硬盘。只能挂在其中某一个目录下,这个目录单独拥有RAID 5的空间,挂到一个固定目录吧。约定文件都往这个里面写,挂到一个固定目录吧。约定文件都往这个里面写。


深圳-网络-麦客:这是什么问题,内存我都处理过了,可是每天还是这样蓝屏,window7系统。是每天启动使用2个多小时就会蓝屏。配置低没办法2个G,还是老内存条  2代的那种。

1>ERP-广州-Bokit:把bios看看里面有个硬盘模式的换了试试。进入BIOS,找到硬盘那个选项,把那项改了。看样提示,是你选择了别的硬盘模式,但没有对应的驱动。所以进入BIOS更改回来。试试看。一般就这几种情况,一一排查。偶安装虚拟机碰到上面一样的提示,所以就想到很有可能是这种情况。

2>java-晨晨-上海:看错误是硬盘驱动,问一下,你电脑是不是只有一块机械硬盘。内存太小导致加载的时候要放一部分数据到机械硬盘,机械硬盘反应太慢,导致崩溃。

3>西安+张恺+网络工程师:每天启动使用2个多小时就蓝屏故障重点从显卡驱动方面排查。检查一下显卡驱动程序是不是官方版本的驱动,调整一下硬盘虚拟内存试试。有些ghost系统集成的显卡驱动会和计算机上安装的某些软件冲突也可能导致。如果是内存问题导致蓝屏,可以试着将虚拟内存调大,看是否还蓝屏,如果不行,有条件的话考虑更换内存条试试。没有条件换内存的话,可以把机箱里面的线整理一下,有利于散热并定时清理系统垃圾文件。也可以下载一个蓝屏查看小工具,看是什么驱动或者系统文件导致蓝屏。这是蓝屏故障查看工具下载地址,可以下载试试:http://www.nirsoft.net/utils/blue_screen_view.html

4>半个开发-小星星-广州:除尘!不搞其他了,先做这个。另外留意下是否每次蓝屏前都开了微软的office,散热引起的蓝,可能性很大,所以除尘先。

win系统蓝屏分软故障&硬故障

软: 系统好坏、驱动冲突、杀软冲突等等

硬: 首要检查磁盘是否坏道,启动加载系统前就蓝屏就像上面说的看BIOS方面,加载系统之后蓝屏除坏道之外,并且排除软故障之后,硬件硬伤可能性很大,主要显卡和主板

5>广州-JAVA-xiao:试下就知道,把主机侧盖打开,运行看看,至少能降10度,这种硬件引起的问题,这种硬件引起的问题,要么升级硬件,蓝屏是系统的自我保护机制。我前天给我哥diy一个主机,都要4g,他就是手机门店用的而已。


python-aa-成都:若将网络192.168.0.0/22划分为5个子网,则可以划分出的最小子网的子网掩码是(),求告知答案,谢谢。

江西–Developer学生–Java:我有到云好像有笔记,我找下。是cidr还是vlsm呢,这是我自己总结的,可以看看https://wenku.baidu.com/view/25fbf52dcc22bcd126ff0cb6


您对这些解答方案是否仍有疑问?欢迎加51CTO开发者QQ交流群 669593760讨论。

下期活动预告:7月18日

关键词:Java、前端、PHP

活动回顾:

挨踢部落坐诊第十四期:支付宝接口调用及小程序设计详解

挨踢部落技术门诊第十五期:解决PHP签名失效 MySQL快速迁移问题

挨踢部落坐诊第十六期:运维人员忽略的那些细节

责任编辑:何星 来源: 51CTO
相关推荐

2018-06-25 14:58:54

技术坐诊

2017-10-19 15:02:31

PythonHadoopWeb

2018-04-23 14:43:51

微服务PHPMySQL

2017-12-19 15:35:00

集群JavaMySQL

2017-05-09 14:15:27

大数据来源数据安全云计算

2018-07-17 11:34:50

技术坐诊

2018-05-23 11:10:39

技术坐诊

2018-01-31 09:52:27

gitJavaMySQL

2017-09-06 17:24:16

2014-01-22 13:37:53

2017-11-17 10:10:51

2018-05-23 15:24:50

技术坐诊

2017-06-07 15:16:35

2018-03-22 13:33:25

GithadoopPython

2022-06-13 10:42:21

分布式事务数据库

2017-02-15 17:12:52

2019-11-18 10:19:02

分布式系统事务模型

2014-02-11 09:07:31

2017-09-28 17:46:44

技术坐诊

2017-04-07 11:16:08

点赞
收藏

51CTO技术栈公众号