标签 实战 下的文章

概念和基本架构Kafka介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多生产者、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化...

阅读全文 »

RabbitMQ介绍、概念、基本架构RabbitMQ介绍RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。高可靠性、易扩展、高可用、功能丰富等支持大多数(甚至冷门)的编程语言客户端。RabbitMQ遵循AMQP协议,自身采用Erlang(一种由爱立信开发的通用面向并发编程的语言)编写。RabbitMQ...

阅读全文 »

目的:理解缓存设计要素掌握缓存预热能够进行缓存问题分析和提供解决方案能够整合mybatis使用缓存理解分布式锁原理并掌握使用理解乐观锁并掌握秒杀的实现理解Redisson的原理了解阿里Redis使用手册架构设计组件选择/多级缓存的设计要分多个层次,在不同的层次上选择不同的缓存,包括JVM缓存、文件缓存和Redis缓存JVM缓存JVM缓存就是本地缓存,设计在应用服务器中(tomcat)。通常可以采用Ehcache和Guava Cac...

阅读全文 »

MongoDB的适用场景网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。大尺寸、低价值的数据:使用传统的关系型数据库存储一些大尺寸低价值数据时会比较浪费,在此之前,很多时候程序员往往会选择传统的文件进行存储。高伸缩性的场景:Mongo 非常适合由...

阅读全文 »

Mycat简介Mycat 是一个实现了 MySQL 协议的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议或JDBC 协议与多个 MySQL 服务器通信,其核心功能是分库分表和读写分离,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。对于 DBA 来说,可以这么理解 MycatMycat 就是 MySQL Ser...

阅读全文 »

ShardingSphereApache ShardingSphere是一款开源的分布式数据库中间件组成的生态圈。它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。ShardingSphere项目状态如下:ShardingSp...

阅读全文 »

背景描述刚开始我们的系统只用了单机数据库随着用户的不断增多,考虑到系统的高可用和越来越多的用户请求,我们开始使用数据库主从架构当用户量级和业务进一步提升后,写请求越来越多,这时我们开始使用了分库分表遇到的问题用户请求量太大单服务器TPS、内存、IO都是有上限的,需要将请求打散分布到多个服务器单库数据量太大单个数据库处理能力有限;单库所在服务器的磁盘空间有限;单库上的操作IO有瓶颈单表数据量太大查询、插入、更新操作都会变慢,在加字段...

阅读全文 »