- 博客(12)
- 收藏
- 关注
原创 Go 协程实现原理
如果没有可用的P,那么G与M之间的关联将解除,同时G会被标记为runnable,放入全局的运行队列中,等待调度器的再次调度。每个线程会都占用 1M 以上的内存空间,在切换线程时不止会消耗较多的内存,恢复寄存器中的内容还需要向操作系统申请或者销毁资源,每一次线程上下文的切换都需要消耗 ~1us 左右的时间。因为多线程不需要创建新的虚拟内存空间,所以它们也不需要内存管理单元处理上下文的切换,线程之间的通信也正是基于共享的内存进行的,与重量级的进程相比,线程显得比较轻量。个活跃线程能够正常运行。
2023-09-18 08:50:19 259
原创 数据密集型应用设计--事务
一个事务读取到某个值之后进行一定的运算,再把新值写到数据库中,在写库之前别的事务可能已经提交了新值的写入,这种情况下会把这个事务的值给覆盖了。在一个事务内保证多次对同一数据的读取是一致的。比如 set a = a+1。MVCC 多版本并发控制。只有一个事务进行写数据。
2023-08-12 18:15:09 68
原创 数据密集型应用设计--数据分区
在系统建立之前,创建远超实际节点数的分区数,然后为每个节点分配多个分区。如果有新增节点的话,就把现有节点中的分区匀一些到新节点,删除节点就反向操作。当有新节点加入的时候,从老节点的分区中随机获取一定数量的数据转移到新节点的新分区中存储。写操作:因为新增一条记录可能涉及多个词条,而不同的词条可能分布在不同分区,所以每次新增或者删除都需要维护不同分区上的词条,速度很慢。对所有数据构建全局索引,并把索引按自己的分区策略分到不同的分区上。每个分区在多个节点上有多个副本,一个节点上可能存储多个分区。
2023-08-12 17:44:17 76
原创 数据密集型系统应用设计——数据复制
*问题描述:**用户编辑完自己的数据之后,马上读取数据,有可能从从节点中读取的数据,如果这个时候同步未完成,则有可能读取不到刚才提交的数据。**问题描述:**如果用户一直刷新页面,有可能出现读到不同的从节点的情况,如果不同节点的同步进度不一致,有可能导致页面的数据一直变化。**存在的问题:**一些随机函数,时间的Now()函数同步给从节点执行会出现主从不一致的问题。**问题描述:**有两个因果关系的数据写入主节点,但是从节点同步的顺序不一致。**解决方法:**可以将不确定的值转成确定的值再同步给从节点。
2023-07-08 15:39:06 90
原创 ZooKeeper 学习笔记
*原理:**利用Zookeeper的强一致的特性,在分布式高并发的情况下节点的创建能够保证全局唯一性,即Zookeepr可以保证客户端无法重复创建一个已经存在的节点。没有创建成功的节点通过Watch机制监听这个节点,当Master宕机了,会话结束,监听的节点再来争夺创建新的几点,创建成功的节点为新的Master。顺序节点:每个父节点会为它的第一级子节点维护一份顺序,用于记录创建的先后顺序,在创建节点的过程中可以自动为节点加一个数字的后缀(递增,上限是整型的最大值)
2023-07-01 17:59:09 63
原创 给Goland加全局的环境变量
打开你的 GoLand 项目。点击顶部菜单栏中的 “GoLand”,然后选择 “Preferences”。在打开的 Preferences 窗口中,选择 “Go”。在 Go 选项下的 “Go Environment” 部分,你会看到 “Environment” 字段。在 “Environment” 字段中,点击右侧的 “…” 按钮。在打开的 “Environment Variables” 窗口中,你可以添加、编辑和删除项目级别的环境变量。点击 “+”按钮添加一个新的环境变量,然后输入变量的名称
2023-05-11 11:19:35 2731 1
原创 Maven deploy报错 Return code is: 400, ReasonPhrase: Bad Request.
Maven deploy报错1. 问题发现deploy项目的正式版本到远程仓库报错,Return code is:400报错信息[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project xxx: Failed to deploy artifacts: Could not transfer artifact xxx:jar:so
2020-08-08 10:28:59 1403
原创 分布式服务架构学习——分布式一致性协议
分布式一致性协议国际开放标准组织定义DTS(分布式事务处理模型),模型中包括四种角色:应用程序,事务管理器,资源管理器,通信资源管理器。J2EE规范中定义了TX协议和XA协议。在J2EE中,关系型数据库,JMS服务即为资源管理器,EJB容器则为事务管理器。两阶段提交协议两阶段提交协议把分布式事务分为两个阶段:准备阶段,提交阶段。都是由事务管理器发起的。准备阶段:事务管理器向事务参与者发送准备指令,参与者对这次事务进行评估,如果可以执行则会写redo,undo日志,锁定资源,执行操作但是没有提交,
2020-08-02 18:33:38 113
原创 分布式服务架构学习——解决一致性问题的模式和思路
解决一致性问题的模式和思路ACID 理论关系型数据库天生用于解决具有复杂业务场景的问题,满足ACID的特性。A(Atomicity):原子性C(Consistency):一致性I(Isolation):隔离性D(Durability):持久性具有ACID特性的数据库支持强一致性,通常使用MVCC实现的。目前互联网项目都是面对大规模,高并发的业务场景,必须要使用拆分的理念对高并发的压力分而治之,这样通过关系型数据库就解决不了一致性的问题。CAP 理论针对分布式系统的CAP理论。C(
2020-08-02 17:46:47 132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人