将在2至5年后产生“转型性冲击”
|
像MySQL Router、MyCat、ShardingSphere(proxy模式)等,都是在此层切入。 优点: 1)多语言支持。也就是说,不论你用的php、java或是其他语言,都可以支持。以mysql数据库为例,如果proxy本身实现了mysql的通信协议,那么你可以就将其看成一个mysql 服务器,因此不同语言的开发者都可以使用mysql官方提供的对应的驱动来与这个代理服务器建通信。 2)对业务开发同学透明。由于可以把proxy当成mysql服务器,理论上业务同学不需要进行太多代码改造,既可以完成接入。 缺点: 1)实现复杂。因为proxy需要实现被代理的数据库server端的通信协议,实现难度较大。 2)proxy本身需要保证高可用。由于应用本来是直接访问数据库,现在改成了访问proxy,意味着proxy必须保证高可用。否则,数据库没有宕机,proxy挂了,导致数据库无法正常访问,就尴尬了。 3)租户隔离。可能有多个应用访问proxy代理的底层数据库,必然会对proxy自身的内存、网络、cpu等产生资源竞争,proxy需要需要具备隔离的能力。
2.5 Sidecar
通过无中心、零侵入的方案提供与数据库交互的的啮合层,即Database Mesh,又可称数据网格。Database Mesh的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互有效的梳理。使用Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。 我们熟知的TDDL、Sharding-JDBC等,都是在此层切入。 优点: 1)实现方便,业务无入侵。smart-client不需要实现客户端通信协议,只需要在数据数据库厂商提供的不同语言的数据库驱动上做封装即可。例如mysql针对java语言提供了mysql-connector-java驱动,针对python提供了mysql-connector-python驱动。 2)天然去中心化。smart-client以sdk的方式被应用引入,然后部署到不同的服务节点上,不需要有代理层proxy。因此相较于代理方式而言,不需要考虑高可用的问题。只要应用的节点没有全部宕机,就可以访问数据库。(这里的高可用是相比代理层proxy而言,数据库本身的高可用还是需要保证的) 缺点: 1)通常仅支持某一种语言。例如tddl、zebra、sharding-jdbc都是使用java语言开发,因此对于使用其他语言的用户,就无法使用这些中间件。如果其他语言要使用,那么就要开发多语言客户端。 2)版本升级困难。因为应用使用数据源代理就是引入一个jar包的依赖,在有多个应用都对某个版本的jar包产生依赖时,一旦这个版本有bug,所有的应用都需要升级。而数据库代理升级则相对容易,因为服务是单独部署的,只要升级这个代理服务器,所有连接到这个代理的应用自然也就相当于都升级了。 3)去中心化的缺点,比如无法做全局的sql限流
2.4 代理层 (编辑:信阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
