大家好,今天小编关注到一个比较有意思的话题,就是关于网站建设服务方案设计的问题,于是小编就整理了1个相关介绍网站建设服务方案设计的解答,让我们一起看看吧。
Java互联网架构-微服务架构如何解决跨库问题的思路与方案?
我们公司使用的就是微服务加分库分表,一般来说如果应用系统出现性能瓶颈或者业务代码耦合过重,可考虑使用微服务架构,而后端的数据库通常使用读写分离,双主互备或者是分库分表来实现性能的提升和数据服务的高可用。
在数据分布在不同的数据库服务器的带来良好性能的同时,新的问题也随之而来,比如说数据一致性的保证,性能监控,数据存取复杂等,而较为突出的就是数据跨库问题!数据分布在不同的节点上,导致原来的连接查询需要跨库,字段的主键难以保证唯一,跨库的事务处理复杂,下面逐一解决:
1,连接查询(join)问题:因为库表分布在不同的机器上,连接查询失效。
解决办法:
①,代码解决:根据某个字段进行hash的方式进行分库分表,保证落在一个库中的类似表中(比如aa_00.t_user_0000和aa_00.t_member_0000),然后基于这样的规则在代码中进行连接查询语句书写!
②,同步:将常用的,需要的字段同步到一个库中进行联合查询!
③,冗余:在一个库中冗余更多的连接查询需要的字段,保证全部数据都能查询到!
2,唯一主键:如果使用传统的自增等方式,多库中的主键id势必重复,所以需要对唯一性加以控制!
解决方法:UUID(根据机器ID,时间等),redis(单线程保证不重复),snowflake算法!
3,分布式事务:
1,TCC:try控制业务代码流程,Confirm确认事务的正确性,cancel取消失败的事务!
2,基于消息系统的一致性方案:单节点事务完成后,通过发送消息保证事务提交,如果失败可通过重试,任务补偿等方式保证数据一致性!
总的来说,分布式系统有着很多以往不存在的问题,还需要具体问题具体分析,可一起交流,更多的技术分享,敬请关注。。。
微服务架构系统灵活性,健壮性,扩展性好,特别适合需求变化迅速的场景。但系统复杂度高,部署,管理难度大。微服务除了开发期框架之外,还有需要一系列的运行期中间件支撑,如API网关,服务注册中心,统一配置中心等。 目前国内比较成熟的吧,东软有一支团队在做,他们网站是 https://platform.neusoft.com/
到此,以上就是小编对于网站建设服务方案设计的问题就介绍到这了,希望介绍关于网站建设服务方案设计的1点解答对大家有用。