Dubbo服务引用对象的生成,是在服务的调用方式分三种

68 阅读2分钟

但是,作为一个有理想有抱负的架构师,除了「加机器」,其实你的微服务还能更优雅、更精细地进行优化。

本文预计阅读时间 10分钟,将从以下三个方面展开:从「AKF扩展立方」说起 「Y轴扩展」相对复杂,我总结了几种模式:

  • 微服务拆分。施工围挡根据具体业务模型、领域模型拆分更细粒度的微服务。
  • 业务隔离拆分。利用消息队列,将在线业务(OLTP)和耗费大量资源的计算任务拆分隔离。
  • 核心与非核心隔离。对于一个微服务,可以将SKA客户与普通客户进行隔离,SKA客户使用独立的集群资源,提高稳定性。

2.1 微服务拆分

某个微服务负载过高,施工围挡一个非常常见的原因就是这个微服务承担了过多的职责。这个时候,我们需要根据具体业务模型、领域模型拆分更细粒度的微服务。也是我们常说的「垂直拆分」。 我们服务一般会采用tomcat或者jetty部署,施工围挡同时采用同步调用的方式。以jetty为例,默认线程池最大线程数为200。如果请求中有耗时任务,影响了同步请求的RT,那么线程池满后就会阻塞请求。

正如利特尔法则(Little's law)表述的:
在一个稳定的系统(L)中,长期的平均顾客人数,等于长期的有效抵达率(λ),乘以顾客在这个系统中平均的等待时间(W);或者,我们可以用一个代数式来表达: 这种隔离拆分的方式,能带来以下优势:

  • 精细化提高服务吞吐能力www.whllwq.cn/(针对核心接口、核心客…
  • 核心业务独享资源,提高核心业务稳定性
  • 避免非核心接口/用户 影响 核心接口/用户 的稳定性前面提到了「数据分区」是「单元化」的必要条件,但是「数据分区」还有其他很多场景应用。

最典型的,就是MySQL单机瓶颈后,需要进行「分库分表」。在服务中需要引入一些支持数据拆分和路由的中间件,如sharding-jdbc、mycat等,在数据层面需要配置相应的分片逻辑。

另外,其他数据库的分区扩展www.whllwq.cn/(如redis集群、m…

一般包括以下几种数据划分的方式: