• 让数据也面向对象(微服务治理数据)


    随着业务的扩展,系统也逐渐的庞大起来,系统的复杂性也随之增加,开发/维护成本也无限的进行扩张,这时候微服务构架应运而生。微服务的相关知识点这里也不在描述,感兴趣的同学可以在网上进行查询。

    微服务解决了传统系统设计的耦合性问题,使庞大的系统进行划分为独立的服务,让每个独立的服务可以独立去解决各自的问题,大大减少了系统后期的维护成本,但是也增大前期的设计成本,因为前期如果设计出现问题,后期的开发将会面临各种不可控的问题。这里主要记录下自己对于微服务构架--服务之间处理数据的问题。

    微服模式将传统系统拆分成N多服务之后,每个服务都拥有自己独立的数据库,每个服务各自维护自己的数据库,这样就会出现一个问题,服务之间的数据库如何处理?这里简单描述下比较常见的2种处理办法

     1.传统模型下--添加字段冗余

        服务A中的数据需要依赖服务B中的数据,这时候可以把服务B中的数据冗余在服务A数据中,查询的时候就可以直接查询服务A的数据,不需要进行跨库进行查询,可以节约很多开销。

        这样处理违反正常的范式设计的,数据也没有办法保持一致性。

     2.服务之间数据同步

        服务A中的数据需要依赖服务B中的数据,这时候可以把服务B中的数据同步到服务A中,查询的时候可以直接查询服务A中的数据库,不需要跨库查询。

       这样数据的及时性得不到保证,而且同步数据量过大也会增加服务的负担。

    在查阅网上多种微服务数据库治理的方法后,感觉都达不到自己的期望。自己考虑后为什么不能用OOP思想去设计微服务的数据库?

    我们把微服务中需要使用的数据库分为3类

    1.private(私有)

      私有是微服务中独享的数据

    2.protected(保护)

      保护就是使用受限的数据

    3.public(公开)

      公开是所有服务可以使用的数据

    私有数据就是微服务中每个独立服务自己的数据,保护/公开数据是微服务中共享服务的数据。

    1.如何处理私有数据,私有数据是服务单独进行维护,其他服务只能通过API进行调用;

    2.如何处理保护数据,保护数据在共享服务中,微服务中其他服务据需要使用数据需要经过共享服务的验证,是否有权限使用该数据。其他服务如果需要编辑共享数据,在获取共享服务的验证后,共享服务会分发相应的事务锁给其他服务,其他服务编辑好数据后写MQ,共享服务订阅MQ后,根据事务锁进行数据处理;

    3.如何处理公开数据,公开数据就是微服务中需要耦合查询后数据。处理方式保护数据;

    上述就是自己对微服务中数据库治理的一些思路想法,欢迎搭建斧正!

  • 相关阅读:
    【已解决】allure空白页 报错 Uncaught TypeError: P.a.registerLanguage is not a function,Uncaught ReferenceError: allure is not defined问题解决方法
    【转】SQLServer查询死锁
    opencv-Mask(掩膜)
    opencv-cvtColor图像制式转换
    opencv-saturate_cast防溢出函数
    opencv-convertTo转换数据格式
    opencv-imwrite保存函数
    opencv-imshow显示函数
    opencv-setTo设置值
    我的蓝牙设备
  • 原文地址:https://www.cnblogs.com/kq123321/p/11169045.html
Copyright © 2020-2023  润新知