Browsed by
标签:MongoDB

消息疯狂堆积!RocketMQ 出 Bug 了?

消息疯狂堆积!RocketMQ 出 Bug 了?

閱讀本文約花費: 21 (分鐘)前言 用过 MQ 的同学,可能会遇到过消息堆积的问题。而肥壕最近也踩上了这个坑,但是发现结果竟然是这么一个意料之外的原因而导致的。 正文 那一晚月黑风高,肥壕正准备踏上回家的路,突然收到告警短信轰炸!“MQ 消息堆积告警 [TOPIC: XXX] ” 肥壕心里“万只草泥马崩腾~” 第一反应是:“怎么肥事?刚下班就来搞事情???” 于是乎赶回公司赶紧打开电脑,登上 RocketMQ 后台查看(公司自己搭建的开源版RocketMQ) 握草 (キ`゚Д゚´)!!! 竟然堆积了3亿多条消息了??? 要知道出现消息堆积无在乎这个问题: 生产者的生产速度 >> 消费者的处理速度  1. 生产者的生产速度骤增,比如生产者的流量突然骤增 2. 消费速度变慢,比如消费者实例 IO 阻塞严重或者宕机 擦了一下头上的冷汗😓…赶紧登上消费者服务器瞧瞧。 应用运行正常!服务器磁盘IO 正常!网络正常! 再去上去生产者的服务器,咦…流量也很正常! 什么???佛了😨 …生产者和消费者的应用都很正常,但是为什么消息会堆积怎么多呢?看着这堆积的数量越堆越多(要是这是我头发的数量那该多好啊),越发着急。 虽然说 RocketMQ 版能支持 10 亿级别的消息堆积,不会因为消息堆积导致性能明显下降,&#x1…

Read More Read More

语雀的技术架构演进之路

语雀的技术架构演进之路

閱讀本文約花費: 21 (分鐘)每个技术人心中或多或少都有一个「产品梦」,好的技术需要搭配好的产品,才能让用户爱不释手,尤其是做一款知识服务型产品。 作者何翊宇(花名:不四)是蚂蚁金服体验技术部高级前端技术专家,语雀产品技术负责人。本文从技术架构的视角,回顾了语雀的原型、内部服务和对外商业化的全过程,并对函数计算在语雀架构演进过程中所扮演的角色做了详细的介绍。 语雀是一个专业的云端知识库,用于团队的文档协作。现在已是阿里员工进行文档编写和知识沉淀的标配,并于 2018 年开始对外提供服务。 1 原型阶段 回到故事的开始。 2016 年,语雀孵化自蚂蚁科技,当时,蚂蚁金融云需要一个工具来承载它的文档,负责的技术同学利用业余时间,搭建了这个文档工具。项目的初期,没有任何人员和资源支持,同时也是为了快速验证原型,技术选型上选择了最低成本的方案。 底层服务完全基于体验技术部内部提供的 BaaS 服务和容器托管平台: Object 服务:一个类 MongoDB 的数据存储服务; File 服务:阿里云 OSS 的基础上封装的一个文件存储服务; DockerLab:一个容器托管平台; 这些服务和平台都是基于 Node.js 实现的,专门给内部创新型应用使用,也正是由于有这些降低创新成本的内部服务,才给工程师们提供了更好的创新环境。 语雀的应用层服务端,自然而然的选用了蚂蚁体验技术部开源的 No…

Read More Read More

Spring Boot 2.x 与 1.x 的区别,以及如何做版本迁移

Spring Boot 2.x 与 1.x 的区别,以及如何做版本迁移

閱讀本文約花費: 5 (分鐘)这一篇文章主要讲解 Spring Boot 2.x 与 1.5.x 的区别,2.x 主要更新了什么东西,以便对 Spring Boot 2.x 有一个详细的了解。 本文讲的 1.x 指的是 1.5.10, 2.x 指的是 2.0.0。 配置变更 在 2.x 中废除了一些 1.x 中的配置,并增加了许多新配置,详细请查看以下链接中的变更表格。 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Configuration-Changelog 依赖 JDK 版本升级 2.x 至少需要 JDK 8 的支持,2.x 里面的许多方法应用了 JDK 8 的许多高级新特性,所以你要升级到 2.0 版本,先确认你的应用必须兼容 JDK 8。 另外,2.x 开始了对 JDK 9 的支持。 第三方类库升级 2.x 对第三方类库升级了所有能升级的稳定版本,一些值得关注的类库升级我给列出来了。 1) Spring Framework 5+ 2) Tomcat 8.5+ 3) Flyway 5+ 4) Hibernate 5.2+ 5) Thymeleaf 3+ 响应式 Spring 编程支持 2.x 通过启动器和自动配置全面支持 Spring 的响应式编程,响应式编程是完全异步和非阻塞的,它是…

Read More Read More

MongoDB PDF EBook

MongoDB PDF EBook

閱讀本文約花費: 1 (分鐘)好书要分享《深入学习MongoDB》PDF版 本书分两部分,分别来自O’Reilly的《MongoDB扩展技术》与《MongoDB开发技巧50例》两书。 前一部分“MongoDB扩展技术”指导大家创建一个不断增长以满足应用程序需求的MongoDB集群,内容简明扼要,指导用户设置和使用集群存储大量数据并高效访问数据。此外,读者还可了解如何让应用程序兼容分布式数据库系统。 具体的主题有: 通过分片设置MongoDB集群; 在集群中查询和更新数据; 操作、监控和备份集群; 从程序设计角度,考虑如何应对分片、配置服务器或者mongos进程停止运行的情况。 遵照其中建议,你很快就可通过MongoDB构建和运行一个高效的、可预测的分布式系统。 目录 MongoDB 扩展技术 第1章 欢迎来到分布式计算的世界 第2章 理解分片 2.1 分割数据 2.1.1 分配数据 2.1.2 如何创建块 2.2 平衡 2.3 mongos 2.4 配置服务器 2.5 集群的构造 第3章 建立集群 3.1 选择片键 3.1.1 小基数片键 3.1.2 升序片键 3.1.3 随机片键 Tags: MongoDB

Mac安装MongoDB

Mac安装MongoDB

閱讀本文約花費: 3 (分鐘)这两天在新电脑上安装MongoDB,竟然忘了是怎么安装的了,以下是按照这一篇文章的安装教程,简单的翻译了一下。翻译原文 Installing MongoDB on a Mac 什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。属于NoSQL数据库系列,NoSQL指的是不仅仅是SQL. 前期准备 Mac 终端(Terminal比较推荐使用iTem2,将使用这个终端安装MongoDB Homebrew。安装MongoDB的时候有一种方式会使用到。Homebrew是Mac电脑包管理工具, 安装概览 有两种方式在Mac上安装MongoDB,最好的一种方式是使用Homebrew进行安装,另一种方式是到MongoDB官网上下载安装包,以下就介绍两种安装方式 使用Homebrew安装MongoDB 打开Terminal(控制台)输入brew update,首先更新homebrew 待homebrew更新完成后,输入brew install mongodb 等到Mongo下载完成。创建一个“db”的文件夹,是用来存放Mongo 数据,可以在默认路径进行安装,直接输入mkdir -p /data/db,可能会遇到权限的问题提示没有权限执行,那直接在这个命令前加上sudo,如sudo mkdir -p /data/db …

Read More Read More

Scroll Up