You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
形态
分库分表中间件,从形态上来说可以分成三种:
SDK 形态
优点:
缺点也是很明显:
以 SDK 形式提供分库分表功能,大多数时候都是以数据库驱动(driver)的形式提供。
sidecar 形式
sidecar 形式是从近几年开始流行起来的,目前来看业界还没有非常成熟的 sidecar 形式的分库分表中间件。sidecar 借鉴了服务治理的思想,即分库分表本身其实和业务是没有什么关系。站在业务层面上来说,它没有分库分表的概念,那么对于普通的业务开发来说,我们也不希望他们被分库分表的各种细枝末节或者注意事项所困扰。
因此希望将分库分表相关的东西完全从应用中剥离出来,做成一个类似于网格 service mesh 的东西。
sidecar 本身的优缺点都介于 SDK 形态和 proxy 形态中间,优点:
缺点:
Proxy 形态
Proxy 形态和 sidecar 比起来更进一步,它不再是和应用一起部署。大多数时候它都是专门独立部署,并且是部署一个集群。所以相比之下,Proxy 额外引入了集群管理的问题。
优点:
缺点:
架构
三种形态都可以纳入一种统一的抽象之下,即可以把分库分表中间件设计成一个核心 + 三层皮。
其中核心暴露一个统一的接口,它是真实处理查询的地方。三层皮则分别对应三种不同的形态:
从这三层皮里面又可以看到,sidecar 和 proxy 都要解决一个通信的问题。如果我们考虑使用 socket 来通信,那么就意味着 sidecar 和 proxy 都可以使用同样的 socket 实现的代码。
所不同的是,对于 sidecar 来说,它能使用独有的 UDS 通信,而 proxy 不能。
Beta Was this translation helpful? Give feedback.
All reactions