一.背景 vivo评论中台通过提供评论发表.点赞.举报.自定义评论排序等通用能力,帮助前台业务快速搭建评论功能并提供评论运营能力,避免了前台业务的重复建设和数据孤岛问题.目前已有vivo短视频.vivo浏览器.负一屏.vivo商城等10+业务接入.这些业务的流量大小和波动范围不同,如何保障各前台业务的高可用,避免因为某个业务的流量暴增导致其他业务的不可用?所有业务的评论数据都交由中台存储,他们的数据量大小不同.db压力不同,作为中台,应该如何隔离各个业务的数据,保障整个中台系统的高可用? 本文将…
本文主要讲述 vivo 评论中台在数据库设计上的技术探索和实践. 一.业务背景 随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似.当时各项目都是各自设计实现,存在较多重复的工作量:并且不同业务之间数据存在孤岛,很难产生联系.因此我们决定打造一款公司级的评论业务中台,为各业务方提供评论业务的快速接入能力.在经过对各大主流 APP 评论业务的竞品分析,我们发现大部分评论的业务形态都具备评论.回复.二次回复.点赞等功能. 具体如下图所示: 涉及到的核心业务概念…
一.背景 在电商领域内,商品是一个重要组成部分,与其对应的商品管理系统,则负责商品的新建.编辑.复制等功能.随着商品管理系统的成熟稳定和业务上的扩展需求,催化出了商品中台的诞生.它可以将现有商品功能最大效率的复用在很多业务上(公司内业务.公司外业务等).而不是仅限于当前团队的业务使用. 在设计商品中台的前端系统时,我们使用了微前端和可视化技术,其可以达到如下效果: 可视化技术可以让各个业务方的运营等相关人员,直观的看到其配置的数据在页面上的展示效果: 微前端可以帮助商品中台更快更好的适配到各个业…
ThreadLocal:  创建一个线程本地变量. 本质:在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本. 优点:既实现多线程并发,游兼顾数据的安全性. 区别:Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离. 示例: public class Student {    private int age = 0;   //年龄       public int getAge() {        return this.age;…
0.进程中的概念 三状态:就绪.运行.阻塞 就绪(Ready):当进程已分配到除CPU以外的所有必要资源,只要获得处理机便可立即执行,这时的进程状态成为就绪状态. 执行/运行(Running)状态:当进程已获得处理机,其程序正在处理机上执行,此时的进程状态成为执行状态. 阻塞(Blocked)状态正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态.引起进程阻塞的事件可有多种,例如,等待I/O完成.申请缓冲区不能满足.等待信件(信号)等. 同步:一个任务的完成需要依赖另外…
进程数据隔离.守护进程,进程同步工具 一.进程之间的数据隔离: from multiprocessing import Process n=100 #主程序中变量n= def func(): global n #子进程中引用父进程中变量n, n=n-1 return 111 if __name__=="__main__": # "子进程必须写在它下面" n_l=[] # 创建一个新列表 for i in range(100): #计数 p=Process(targe…
线程之间本身是数据共享的,当多个线程同时修改一份数据的时候,数据就可能不 准确,特别是线程量特别大的时候,为了保证数据准确性: (1) 通过线程锁Lock (2)通过local数据隔离 from threading import local, Thread loc = local() # 生成一个对象 def func(name, age): global loc loc.name = name loc.age = age print(loc.name, loc.age) Thread(targ…
线程之间本身是数据共享的,当多个线程同时修改一份数据的时候,数据就可能不 准确,特别是线程量特别大的时候,为了保证数据准确性: (1) 通过线程锁Lock (2)通过local数据隔离 from threading import local, Thread loc = local() # 产生一个对象 def func(name, age): global loc loc.name = name loc.age = age print(loc.name, loc.age) Thread(targ…
文件组的基本知识点介绍完毕后,根据场景引入中的内容,我们将利用SQL Server文件组技术来实现冷热数据隔离备份的方案设计介绍如下. 设计分析 由于payment数据库过大,超过10TB,单次全量备份超过20小时,如果按照常规的完全备份,会导致备份文件过大.耗时过长.甚至会因为备份操作对I/O能力的消耗影响到正常业务.我们仔细想想会发现,虽然数据库本身很大,但是,由于只有当前年表数据会不断变化(热数据),历史年表数据不会修改(冷数据),因此正真有数据变化操作的数据量相对整个库来看并不大.那么,…
EEPlat PaaS支持三种租户的数据隔离技术:Sparce Column.tenantId字段隔离.每一个租户独立数据库. 1)Sparce Column,和Salesforce Appforce 类似,主要通过一个通用表来存放全部自己定义信息,里面有租户字段和非常多统一的数据栏位(比方500个).EEPlat PaaS平台通过租户分区的方式进行租户数据的查询优化. 和Appforce 不同的是.EEPlat PaaS平台产品提供了2层的元数据抽象.EEPlat PaaS平台产品中业务元数据…