随笔分类 - 架构
摘要:【IT老齐049】Cassandra高性能原因 列式数据库是以列相关存储架构进行数据存储的数据库 应用场景: 批量处理、超大规模即时查询 磁盘存储方式 高性能原因 数据库不读取无效数据 只查询指定列上的数据 只返回指定列上的数据 磁盘I/0效率高 数据压缩比大 数据相关性大 数据压缩比高 利用Cac
阅读全文
摘要:【IT老齐048】Kafka高性能原因 磁盘顺序读写 定期批量删除指定数据 页缓存 Kafka避免使用JVM,直接使用操作系统的页缓存特性提高处理速度,进而避免了JVM GC带来的性能损耗。 Kafka采用字节紧密存储,避免产生对象,这样可以进一步提高空间利用率 零拷贝 批量操作
阅读全文
摘要:【IT老齐047】避坑UUID主键 场景 财政部金财工程平台在代理行日终结算时,经常出现磁盘的IO异常,导致经常出现高延迟 对比发现在大量数据新增时磁盘IO居高不下,多次测试后发现是UUID主键在搞鬼 UUID 基于时间的UUID 能保证不同设备UUID是唯一的 在同一设备上生成UUID可能重复 D
阅读全文
摘要:【IT老齐046】RabbitMQ队列解决消息积压问题 场景 每天上午10点,全国2万多名客户经理集中录入上一日JK单据到BorrowSale系统,峰值能达到500单/s。但信审系统任务重,最多只支持到60单/s,每日会导致大量消息积压 解决方案 工作队列 RabbitMQ改为工作队列模式,将消息送
阅读全文
摘要:【IT老齐045】RabbitMQ六种队列模式 前情提要 Producer:生产者,消息的提供者 Consumer:消费者,消息的使用者 Broker:MQ服务器,管理队列、消息及相关信息 Message:消息,程序间的通信的数据 Queue:队列,消息存放的容器,消息先进先出 Exchange:交
阅读全文
摘要:【IT老齐043】线上JVM OOM排查 基本信息 # 锁定进程pid jps # 查看空间占用 1秒1次 10次 jstat -gcutil pid 1000 10 Arthas curl -O https://arthas.aliyun.com/math-game.jar java -jar m
阅读全文
摘要:【IT老齐042】生产环境JVM参数与垃圾回收GC 最大堆和最小堆大小 GC收集器 新生代(年轻代)大小 JVM选项规则 +代表开启/-代表关闭 java -version 标准选项,任何版本JVM/任何平台都可以使用 java -Xms10m 非标准选项,部分版本识别 java -XX:+Prin
阅读全文
摘要:【IT老齐040】MySQL自增主键 业务主键更浪费空间 业务主键无顺序,可能会造成写入数据时需要更长组织索引 业务主键如果是字符串,在分库分表时,无法直接取模运算
阅读全文
摘要:【IT老齐039】应用发布与持续集成(CI)
阅读全文
摘要:【IT老齐038】MQ中间件实现可靠性投递 可靠性保证 发送阶段,遇到高延迟,Producer会多次重发消息,直到Broker ack确认,过程中Broker会自动去重,超时Producer产生异常,应用进行捕获提示。 存储阶段,Broker先刷盘再ack确认,即便ack失败消息不会丢失,多次重试直
阅读全文
摘要:【IT老齐037】禁用JDK序列化 兼容性差,不支持异构系统 安全性,未经过加密,易被篡改 性能差,占用空间大 其他方案 第三方的序列化方法能解决复杂对象的循环引用问题:要现在本地解决循环引用再考虑序列化问题。Gson碰到循环引用直接报错,Jackson可以设置迭代层级,但会导致对象关系不完整 Sp
阅读全文
摘要:【IT老齐036】MySQLS索引选择性陷阱 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决 说明:索引文件具有 B-Tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引 索引选择性陷阱 命中的索引值超过总量25%,就可能产生索引选择性陷阱,导致全表扫描 以Explain执
阅读全文
摘要:【IT老齐035】蓝绿、红黑、灰度发布 尽可能减少服务停机时间 控制新版本带来的质量风险 全量发布 蓝绿部署 红黑部署 与蓝绿部署相比,红黑部署可以充分利用了云计算的弹性伸缩优势,从而获得了两个收益:简化了流程;避免了在升级的过程中,由于只有一半的服务器提供服务,而可能导致的系统过载问题 增量发布
阅读全文
摘要:【IT老齐033】Docker一键发布Nginx-Tomcat-MySQL应用集群 创建虚拟网段 docker network create -d bridge my-bridge MySQL容器 docker run -p 3306:3306 --network my-bridge --name
阅读全文
摘要:【IT老齐032】Docker容器化 镜像: 镜像是文件,是只读的,提供了运行程序完整的数据是应用程序的集装箱 容器: 镜像的运行环境,迷你的linux操作系统,由Docker负责创建,容器之间彼此隔离
阅读全文
摘要:【IT老齐031】微服务架构设计 分布式架构的发展过程 什么是微服务架构 所谓微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并以轻量级的机制(通常是HTTP RESTful API)的方式进行通信,这些服务围绕着业务能力所建立的,并且可以由完全自动化的部署
阅读全文
摘要:【IT老齐030】MySQL MVCC机制 在MySQLInnoDB存储引擎下,RC、RR基于MVCC(多版本并发控制) 进行并发事务控制 MVCC是基于“数据版本”对并发事务进行访问 场景 UNDO_LOG版本链 UNDO LOG版本链不是立即删除,MySQL确保版本链数据不再被“引用”后再进行删
阅读全文
摘要:【IT老齐029】MySQL脏读、幻读、不可重复读 讲解脏读、不可重复读、幻读的区别与出现场景 脏读指读取到其他事务正在处理的未提交数据 不可重复读指并发更新时,另一个事务前后查询相同数据时的数据不符合预期 幻读指并发新增、删除这种会产生数量变化的操作时,另一个事务前后查询相同数据时的不符合预期 通
阅读全文
摘要:【IT老齐028】Redis Cluster集群模式 Cluster模式是Redis3.0开始推出 采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接 官方要求:至少6个节点才可以保证高可用,即3主3从;扩展性强更好做到高可用 各个节点会互相通信,采用gossip协议交换节
阅读全文
摘要:【IT老齐027】经典Web高可用架构 dns解析域名轮询到nginx服务器来保证资源高利用率 vip+keepalived实现ip漂移来保证高可用 nginx负载均衡到tomcat实现高可用 DNS轮询的缺点 只负责IP轮询获取,不保证节点可用 DNSIP列表变更有延时 外网IP占用严重
阅读全文