服务端架构设计
八号的上帝
这个作者很懒,什么都没留下…
展开
-
扩展中台能力——通用sidecar
什么是SideCar简而言之,SideCar就是在docker实例内部与服务(上图Service A)独立的一个服务,如上图的proxy A.服务可以通过本地socket、共享内存等方式与SideCar进行通信。SideCar开发模式抽象来看,SideCar可以成为一种新的开发模式,它是介于rpc调用和本地库之间一种模式。我们可以将SideCar通用化,将原先实在独立rpc服务内部...原创 2019-12-14 10:35:09 · 365 阅读 · 0 评论 -
Redis集群系列(一)——基础分布式原理
虽然单机版的redis拥有较高的稳定性,但是在面对服务器宕机、网络中断、操作系统崩溃等问题时,该如何保证它的高可用?面对海量的业务数据,redis又该如何存储呢?为了解决上述问题,redis集群应运而生。本文不涉及具体的redis集群实现,而是从如何保证高可用和提供海量存储两个方面讲解构建redis集群依赖的基础分布式原理。集群的几大要素High Availablity为了保证高可用,一种朴...原创 2019-12-12 23:08:16 · 195 阅读 · 0 评论 -
高性能服务缓存设计
缓存更新策略cache aside(常用)是否万无一失呢?缓存脏了,但是概率很低因为(1)需要写的时候并发读(2)cache miss (3)一般写比读慢所以尽量加过期时间两种操作如何保证原子性?分布式事务?还是加个重试吧Read/Write through可以理解为,应用认为后端就是一个单一的存储,而存储自己维护自己的Cache。Read ThroughRe...原创 2019-12-12 22:41:51 · 251 阅读 · 0 评论 -
业务中台的设计误区——随笔
大包大揽业务中台需要明确自己的边界:中台往往是对某种能力的抽象,由于服务于不同业务,必然的,不同服务在某些点有不同的需求。有些可以是由中台同学实现,而有些则需要允许业务灵活定制。这时候需要中台设计者做好足够的抽象,明确中台的边界在哪儿。当业务需要灵活定制时,比如ab实验、规则引擎等,通常有两种做法:1. 代码内嵌一个执行引擎,比如嵌入lua/python等,由业务自己写脚本,脚本运行在中台内部...原创 2019-11-23 09:03:48 · 227 阅读 · 0 评论 -
基于graphql实现复杂业务打包服务
什么是Packer我们的业务存在许多实体,比如item/music/challenge/user等。每个实体之间存在组合关系,比如item中存在使用的music,user拥有post item list。所以实体之间的关系是可以构成一张图。对于调用方来说,如果用标准的Restful方式交互,即先根据id拿到一个实体,再去拿它对应的实体信息,会存在两个问题:1. 整体延时高,特别是涉及到前后端交互...原创 2019-11-23 08:33:34 · 361 阅读 · 0 评论