分布式需要注意的问题和解决办法
来源:互联网 发布:linux 添加自定义命令 编辑:程序博客网 时间:2024/09/21 08:17
1、单点登陆:
保证数据库密码加密方式一样,如果别的项目已经有了用户系统怎么办呢,如果可以导一份过来到无所谓,但是如果到不过来怎么办,那就跟别的项目组商量号可不可以新加1个字段(虽然这样比较危险,但如果 熟悉项目的人操作应该没啥问题),就放我们的ID密码,当我们这边进行添加操作是,先查下你那张用户表有没有这个用户名,如果没有你们那边就新添加一个用户,你那边的登陆根据自己的加密出一个很难的密码,新加的字段填写我这边的密码,如果已经有了就直接修改这条数据,加上密码,之后我这边的访问通过的密码就是新加的密码字段(密码都加密,而且不暴露加密方法,这样用户就不会有什么问题了),也可以新建一张表,跟我这边一样,存储我们这边的用户信息,我们这边方法就直接查这张表(推荐方法)。
2、分布式配置信息
分布式的连接IP可能经常改变,如果存入配置文件中,每次更改都需要重新部署,所以建议存入数据库(最起码那些用户名:密码(加密),IP,端口,方法)存入数据库。
3、分布式数据一致性(分布式都可能会存在网络)
分布式主要需要考虑的就是数据一致性的问题,这边也要同时估量性能问题,分2种情况。
一、你不知道跟你对接的系统的数据源信息(一般情况是这样的)。
这时就需要考虑是否需要立即通信
(1)、需要立即通信的
如我这边需要开一张发票,客户在点击的时候是在我们系统操作,之后发票打印出来,但其实是我们先把信息发给百旺, 百旺在发给国税(他这里用的是定时上报),之后百旺操作完成,才返回成功信息给我们,之后我们这边在进行一定的操作, 发票打印成功,客户并不知道它使用了别的项目,这种情况就需要主要考虑性能问题,我们不能一直让客户在哪里等着,所以 就需要及时通信,就可以直接发送一个连接给百旺,百旺在通过一个链接返回信息给我们,这时我们在打印出一张发票,就完 成了一个分布式。
这种分布式主要需要考虑的就是并发问题和分布式执行效率的问题,它适合分布式关联的项目少,执行的代码对数据库的 操作不是很慢的那种,并发问题就是所有的网站访问都会存在的,解决的办法就是解决所有分布式项目的并发问题,有时关联 的系统有点多,但不一定需要立即通信,像这里就用到了,百旺给国税发送信息,因为发票真正打印时百旺,国税的系统并不 关心你给谁打印了发票,他只要记录你打印出了多少发票就可以了,这时你为了提高访问效率,就可以不必立即通信国税,但 因为发票真正出现时百旺开的,所以百旺必须时时通信,这样就尽可能的提高了效率。
(2)、不需要立即通信的
比如客户在柜台开了一张卡,银行赚了一笔手续费,它有了收入,就必须要给国家交税,但如果你时时生成税务报表,国 税每天得接收多少收据啊,得有多少流水啊,而且它也不关心你的流水,它只关心你在大方向得跟我交多少税(如果它认为你 交的税有问题,它是可以来你的公司对你进行查账的),所以你就没必要时时通信,你在一定的时间把数据处理出来,定时传 送给它就可以了,这总就可以在业务不是很忙系统不是高峰期的时候给,可以提高效率。
实际上大多数时候都是需要两种方法结合使用的。
就说一种场景吧(我也不知道它内部怎么实现的),支付宝支付客户点开支付宝付账,之后选择支付方式,支付宝确认你 的用户名密码是否正确,正确就通知支付宝的对公账户发送一个指令给银行,我需要转一笔钱给某商户,银行就扣除你一定的 款项,应该没有你真正付给商户的钱多(这部分就是银行和支付宝的收入,好像是这样的,具体不是很了解),之后银行就需 要扣掉支付宝的对公卡号的钱,之后给商户那个绑定的银行卡转账,支付宝在把这个钱转给支付宝账号里面(好像阿里巴巴搞 了个自己的银行,需不需要转入自己银行就不知道了),这些就需要立即通信,但其实这件事还没完呢,支付宝和银行赚了 钱,它们就必须交税,但这个事其实已经跟客户无关了,就不需要立即通信了,你立即通信也可以,但是会加大安全隐患,影 响性能,而且分布式关联的项目也多,你并发要考虑的项目就也多,所以这里的分布式就是典型的2种情况结合使用了。
经常用的保证数据一致性的方法:
一种就是建一张表存储各个分布式项目执行是否成功的返回情况(最好都设置下响应时间,如果到了时间还未响应,就把 这个异常的信息加入一张异常表里,包含你传送给它的信息,是在哪个分布式方法没有返回,访问次数,原因,之后开一个定 时器继续访问,如果超过了几次访问都还是没成功,这里最好是模拟数据,就是不要添加入真正表中,就自动发送一个信息给 负责这个技术员,邮箱还是短信随便,如果这里成功,就再次执行上述方法,如果还是失败,就自动发送一个信息给负责这个 技术员)或者直接返回失败,就通知事物都回滚。
一种是先让客户那边执行过去,这边之后通过定时任务同步数据(数据量不要全部同步,最好根据时间段同步,同步一般 通过主键同步)。
二、你知道对接项目的数据源
(1)、在项目配置的时候配置多数据源,不同的操作操作不同的数据源,典型位分库操作。
4、传输数据的方法:
一、文件传输(xml报文、txt文件等等)。
二、js路径访问(通过控制一定的IP,端口,用户名,密码)校验,之后访问客户方法,这种方法xml会暴露用户名密码, 适合在内网中操作,可以用post传送参数。
三、直接后台存方法操作。
........
- 分布式需要注意的问题和解决办法
- 多线程+Webservice分布式编程时需要注意的COM问题
- NodeJs安装和需要注意的问题
- 需要注意的问题
- 需要注意的问题
- 分布式架构需要注意的地方
- TCP建立和释放原理和需要注意的问题
- php memcache分布式和要注意的问题
- Hadoop伪分布式配置及与Eclipse集成开发需要注意的问题
- UIViewController的loadView需要了解和注意的问题
- 多播的实现和需要注意的问题
- 多播的实现和需要注意的问题
- MATLAB和VS2010的混合编程需要注意的问题
- layout_graviry和gravity的区别及需要注意的问题
- 【miscellaneous】多播的实现和需要注意的问题
- 需要注意的小问题
- 使用需要注意的问题
- toArray()需要注意的问题
- webstorm 2017 激活破解
- 10个营销中常见的用户心理效应
- jq滚动到底部自动加载数据实例
- epoll讲解
- mysql Access denied for user root@localhost错误解决方法总结(转)
- 分布式需要注意的问题和解决办法
- Android自定义View(一、初体验自定义TextView)
- 常见部分排序
- jQuery插件——imgbox(点击图片查看大图)
- Intel RealSense(实感技术)概览
- Android开发,使用Wifi调试真机
- javascript 删除 url 中指定参数,并返回 url
- 获取iOS应用当前版本宏定义
- iOS中的.gitignore文件