Fork me on GitHub

DynamoDB

摘要

Amazon 是世界上最大的电商之一。

在这里我们所遇到的最大挑战之一就是 超大规模下的稳定性问题 (reliability at massive scale)。即使是最微小的故障(the slightest outage),也会造成巨大的经济 损失,而且会降低客户对我们的信任。Amazon.com 作为一个为全球提供 web 服务的平台, 其底层的基础设施是由分布在全球的数据中心中成千上万的服务器和网络设备组成的。在如 此庞大的规模下,大大小小的组件故障是不断在发生的,而我们应对这些故障时所采取 的 管理持久状态的方式 (the way persistent state is managed), 驱动着软件系 统的可靠性(reliability)和可扩展性(scalability)的发展

本文介绍 Dynamo —— 一个高可用键值存储系统 —— 的设计和实现。Amazon 的一些核心 服务就是基于 Dynamo 提供不间断服务的(always-on experience)。为了达到这种等级的 可用性(level of availability),Dynamo 牺牲了几种特定故障场景下的一致性 。另 外,Dynamo 大量使用了 对象版本化 (object versioning)和应用协助的冲突解决 (application-assisted conflict resolution)机制,给开发者提供了一种新颖的接口。

阅读更多...

使用 Redis 集群进行扩展

使用 Redis 集群进行横向扩展

Redis 使用称为 Redis 集群的部署拓扑进行水平扩展。本主题将教您如何在生产环境中设置、测试和操作 Redis 集群。您将从最终用户的角度了解 Redis 集群的可用性和一致性特征。

如果您计划运行生产 Redis 集群部署或想要更好地了解 Redis 集群的内部工作原理,请参阅Redis 集群规范 。要了解 Redis Enterprise 如何处理缩放,请参阅使用 Redis Enterprise 进行线性缩放

阅读更多...

Redis Sentinel 的高可用性

非集群Redis的高可用

Redis Sentinel 在不使用Redis Cluster 时为 Redis 提供高可用性。

Redis Sentinel 还提供其他附带任务,例如监控、通知并充当客户端的配置提供程序。

这是宏观层面(即 大图 )的 Sentinel 功能的完整列表:

  • 监控 。Sentinel 不断检查您的主实例和副本实例是否按预期工作。
  • 通知 。Sentinel 可以通过 API 通知系统管理员或其他计算机程序,其中一个受监控的 Redis 实例出现问题。
  • 自动故障转移 。如果 master 没有按预期工作,Sentinel 可以启动一个故障转移过程,其中一个副本被提升为 master,其他额外的副本被重新配置为使用新的 master,并且使用 Redis 服务器的应用程序被告知要使用的新地址连接时。
  • 配置提供商 。Sentinel 充当客户端服务发现的权威来源:客户端连接到 Sentinels 以询问负责给定服务的当前 Redis master 的地址。如果发生故障转移,Sentinels 将报告新地址。
阅读更多...

Redis高级数据结构

设计的主要特性和原理

Redis 集群目标

Redis Cluster 是 Redis 的分布式实现,按照设计中的重要性顺序具有以下目标:

  • 高性能和线性可扩展性高达 1000 个节点。没有代理,使用异步复制,不对值执行合并操作。
  • 可接受的写入安全程度:系统尝试(以最大努力的方式)保留所有来自与大多数主节点连接的客户端的写入。通常有一些小窗口,其中确认的写入可能会丢失。当客户端位于少数分区中时,丢失已确认写入的窗口更大。
  • 可用性:Redis 集群能够在大多数主节点可访问的分区中存活下来,并且每个不再可访问的主节点至少有一个可访问的副本。此外,使用 replicas migration ,不再被任何副本复制的 masters 将从被多个副本覆盖的 master 接收一个。

本文档中描述的内容在 Redis 3.0 或更高版本中实现。

阅读更多...

深入理解Java虚拟机

介绍

这边文章我们深入了解一下Java虚拟机。
我会了解到:

  • 虚拟机的种类大概有哪些?
  • JVM的内存管理模型是什么样子的?
  • Java对象的创建过程是什么样子的?
  • Java对象的内存布局是什么样子的?
  • 如何判断对象是垃圾?
  • Java中引用的类型有哪些?
  • 垃圾收集算法有哪些?
  • HopSpot的垃圾收器是怎么实现的?
  • 经典的垃圾收集器有哪些?
  • 低延迟的垃圾收集器有哪些?
  • 如何选择垃圾收集器?
  • JVM提供了哪些监控工具?
  • 市面上有哪些可视化的工具?
  • JVM是怎么调优的?
  • Class文件结构是什么样子的?
  • 常见的字节码指令有哪些?
  • Java编译的流程是什么样子的?
  • 后端编译的过程是什么样子的?
  • Java内存模型是什么样子的?
  • volatile关键字有什么用?
  • Java的多线程是怎么实现的?
  • Java中有哪些锁优化?

希望对你有所帮助~

阅读更多...

Java之Netty.md

介绍

Netty是一套支持NIO的客户端-服务器框架。
高性能、高并发。
支持异步通信。
他是使用Java编写的。
在Java领域中,他是IO界的老大,特别是网络IO。
很多项目都用它,比如Dubbo,RocketMQ,Cassandra等等。

在这片文章中,我们会学习到:

  1. 常见的IO模型
  2. Netty项目
  3. Netty实战
  4. Netty在我司生产中的应用

那我们开始吧!

阅读更多...

Go语言学习-快速入门

简介

最近觉得Go语言很有前途,语法灵活,容器化部署方便,资源消耗小。
而且还有强力的并发能力:Goroutines
所以决定从今天开始,学习Go语言。

这一次我们将学习到:

  • Golang基本概念
  • 基本数据类型
  • 基本语法
  • 复杂类型
  • 方法与协程

我们现在开始吧!

阅读更多...

MySQL调优

介绍

这篇文章,我们将谈到SQL优化的相关知识。

  • 我们会讲到如何合理定义数据结构
  • 如何设计高效的索引
  • 如果写出高效的SQL语句
  • 如果发生了慢查询,我们如何分析
  • 如何选择其他的组件来替换MySQL

现在,我们开始吧!!

阅读更多...
  • Copyrights © 2020-2022 chengpeng
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信