分布式需要注意的问题和解决办法

           1、单点登陆:

         保证数据库密码加密方式一样,如果别的项目已经有了用户系统怎么办呢,如果可以导一份过来到无所谓,但是如果到不过来怎么办,那就跟别的项目组商量号可不可以新加1个字段(虽然这样比较危险,但如果 熟悉项目的人操作应该没啥问题),就放我们的ID密码,当我们这边进行添加操作是,先查下你那张用户表有没有这个用户名,如果没有你们那边就新添加一个用户,你那边的登陆根据自己的加密出一个很难的密码,新加的字段填写我这边的密码,如果已经有了就直接修改这条数据,加上密码,之后我这边的访问通过的密码就是新加的密码字段(密码都加密,而且不暴露加密方法,这样用户就不会有什么问题了),也可以新建一张表,跟我这边一样,存储我们这边的用户信息,我们这边方法就直接查这张表(推荐方法)。

         2、分布式配置信息

          分布式的连接IP可能经常改变,如果存入配置文件中,每次更改都需要重新部署,所以建议存入数据库(最起码那些用户名:密码(加密),IP,端口,方法)存入数据库。

         3、分布式数据一致性(分布式都可能会存在网络)

         分布式主要需要考虑的就是数据一致性的问题,这边也要同时估量性能问题,分2种情况。

         一、你不知道跟你对接的系统的数据源信息(一般情况是这样的)。

                这时就需要考虑是否需要立即通信

               (1)、需要立即通信的

                 如我这边需要开一张发票,客户在点击的时候是在我们系统操作,之后发票打印出来,但其实是我们先把信息发给百旺,          百旺在发给国税(他这里用的是定时上报),之后百旺操作完成,才返回成功信息给我们,之后我们这边在进行一定的操作,            发票打印成功,客户并不知道它使用了别的项目,这种情况就需要主要考虑性能问题,我们不能一直让客户在哪里等着,所以          就需要及时通信,就可以直接发送一个连接给百旺,百旺在通过一个链接返回信息给我们,这时我们在打印出一张发票,就完          成了一个分布式。

                 这种分布式主要需要考虑的就是并发问题和分布式执行效率的问题,它适合分布式关联的项目少,执行的代码对数据库的          操作不是很慢的那种,并发问题就是所有的网站访问都会存在的,解决的办法就是解决所有分布式项目的并发问题,有时关联          的系统有点多,但不一定需要立即通信,像这里就用到了,百旺给国税发送信息,因为发票真正打印时百旺,国税的系统并不          关心你给谁打印了发票,他只要记录你打印出了多少发票就可以了,这时你为了提高访问效率,就可以不必立即通信国税,但         因为发票真正出现时百旺开的,所以百旺必须时时通信,这样就尽可能的提高了效率。

                 (2)、不需要立即通信的

                 比如客户在柜台开了一张卡,银行赚了一笔手续费,它有了收入,就必须要给国家交税,但如果你时时生成税务报表,国         税每天得接收多少收据啊,得有多少流水啊,而且它也不关心你的流水,它只关心你在大方向得跟我交多少税(如果它认为你           交的税有问题,它是可以来你的公司对你进行查账的),所以你就没必要时时通信,你在一定的时间把数据处理出来,定时传           送给它就可以了,这总就可以在业务不是很忙系统不是高峰期的时候给,可以提高效率。

        实际上大多数时候都是需要两种方法结合使用的。

                就说一种场景吧(我也不知道它内部怎么实现的),支付宝支付客户点开支付宝付账,之后选择支付方式,支付宝确认你         的用户名密码是否正确,正确就通知支付宝的对公账户发送一个指令给银行,我需要转一笔钱给某商户,银行就扣除你一定的           款项,应该没有你真正付给商户的钱多(这部分就是银行和支付宝的收入,好像是这样的,具体不是很了解),之后银行就需           要扣掉支付宝的对公卡号的钱,之后给商户那个绑定的银行卡转账,支付宝在把这个钱转给支付宝账号里面(好像阿里巴巴搞           了个自己的银行,需不需要转入自己银行就不知道了),这些就需要立即通信,但其实这件事还没完呢,支付宝和银行赚了             钱,它们就必须交税,但这个事其实已经跟客户无关了,就不需要立即通信了,你立即通信也可以,但是会加大安全隐患,影           响性能,而且分布式关联的项目也多,你并发要考虑的项目就也多,所以这里的分布式就是典型的2种情况结合使用了。

        经常用的保证数据一致性的方法:

               一种就是建一张表存储各个分布式项目执行是否成功的返回情况(最好都设置下响应时间,如果到了时间还未响应,就把          这个异常的信息加入一张异常表里,包含你传送给它的信息,是在哪个分布式方法没有返回,访问次数,原因,之后开一个定          时器继续访问,如果超过了几次访问都还是没成功,这里最好是模拟数据,就是不要添加入真正表中,就自动发送一个信息给          负责这个技术员,邮箱还是短信随便,如果这里成功,就再次执行上述方法,如果还是失败,就自动发送一个信息给负责这个          技术员)或者直接返回失败,就通知事物都回滚。

                一种是先让客户那边执行过去,这边之后通过定时任务同步数据(数据量不要全部同步,最好根据时间段同步,同步一般       通过主键同步)。

      二、你知道对接项目的数据源

              (1)、在项目配置的时候配置多数据源,不同的操作操作不同的数据源,典型位分库操作。

      4、传输数据的方法:

                一、文件传输(xml报文、txt文件等等)。

                二、js路径访问(通过控制一定的IP,端口,用户名,密码)校验,之后访问客户方法,这种方法xml会暴露用户名密码,       适合在内网中操作,可以用post传送参数。

                三、直接后台存方法操作。

               ........

               

       

        

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值