分布式知识图谱
2019-03-14 15:39:36 3 举报
AI智能生成
Java分布式知识图谱
作者其他创作
大纲/内容
消息队列
kafka
activeMQ
分布式服务调用
Dubbo
rpc
注册中心
zk选举算法
Registry:zookeeper,multicast,redis
协议
netty
Protocol: netty,rmi,hession,http, webservice,thrift,redis,memchached,
服务重名
使用group解决
超时
SpringCloud
Eureka/Consul/Etcd/Zk
Feign
zuul
Hystrix
分布式事务
解决方案
组件
Fescar
rocketMQ
二段/三段提交
多 prepare -> commit
补偿式事务TCC
开发成本高,每个事务操作每个参与者都需要实现try/confirm/cancel三个接口。
本地消息表(异步确保)
将业务消息维护到本地消息表里,将分布式事务拆分成本地事务进行处理
消费方本地处理失败了会重试,如果是业务失败发送补偿信息给生产方,通知其回滚
MQ 事务消息
rocketMQ
1、A服务提交消息到MQ,对B不可见
2、A服务执行完事务将,告诉MQ确认刚才的消息,对B可见
3、B服务执行完事务,告诉MQ确认完成,如果失败,告诉MQ失败,A收到失败消息回退操作
Sagas 事务模型
它将大事务拆分本地小事务,有个事务成功链,失败了回调补偿链
CAP理论
一致性(Consistency):
可用性(Availability):
分区容忍性(PartitionTolerance):
BASE理论
Basically Available(基本可用)
Soft state(软状态)
Eventually consistent(最终一致性)
分布式存储
ES
底层为Lucene
大数据量查询使用Scroll API
JVM配置 不大于32G
缓存
redis
分布式锁
setNX,set if not exits
设置锁的过期时间,防止程序崩溃获取不到锁
由于程序崩溃(或者执行时间超长),导致的锁失效问题可以用守护线程延长锁等待时间
需要有一个公共守护新阿西,如果锁超时5分钟的异常情况,进行告警
删除掉锁的时候,利用发布订阅解决频繁的锁竞争问题
RedisCallBack异步执行
程序内部还得加锁,因为程序内部是多线程调用的
redis-lua(redis异步主从复制,有数据一致性问题), redisson, zookeeper(比较靠谱)
String、List、Hash、Set、SortedSet、pipepline
分页
redis工作原理,在线扩容,哨兵机制
一致性hash算法
es、hadoop,redis(65535个虚拟节点)
缓存雪崩后,大流量进入数据库
方法上锁,只有某一个用户能调用该方法(其它用户阻塞或返回错误),将缓存补全后,恢复服务
数据库
MySQL
ShardlingJDBC
MyCat
动态扩容问题
hbase
hdfs
文件服务
FastDFS
TFS
高可用
限流
Guava RateLimiter/ Sentiniel
容灾
监控
zabbix
负载均衡
LVS
在四层(传输层)将http地址直接修改,少了nginx的拆包解包,request header,cookie等操作。
nginx
cpu 进程数 worker_cpu_affinity
并发连接数 worker_connections
硬件设备
F5
DDOS防护
DNS 负载均衡
一个域名每次返回不同的地址,达到负载均衡的效果
收藏
收藏
0 条评论
下一页