《软件架构模式》-第四章 微服务框架模式(上)

原文地址  译者:克里斯托刘

微服务架构模式正在迅速成为行业中单一应用程序及面向服务架构的可行的解决方案。因为这个架构模式仍在不断发展,关于这种模式的定义和其实现方式还有很多困惑之处。本章将为您解释其关键概念和基础知识,以理解这种模式的优点以及是否适合您的应用程序。

模式描述

无论选择的拓扑或实施方式如何,有许多普遍的核心概念是适用于所有的该架构模式。第一个概念是独立部署单元。如图4-1所示,每个微服务架构的组件都部署为一个独立的单元,这达到了以下优点:部署简单(通过高效和流水交付管道)、可扩展性增加、以及高度的应用和组件在应用程序内的解耦。

阅读全文

《Thrift官方文档》Thrift 网络栈

Thrift 网络栈

下图是一个Thrift网络栈的简单描述

+-------------------------------------------+
| 服务器层                                  |
| (单线程由消息驱动)                        |
+-------------------------------------------+
| 处理层                                    |
| (由编译器自动生成的)                      |
+-------------------------------------------+
| 协议层                                    |
| (JSON格式可压缩)                          |
+-------------------------------------------+
| 传输层                                    |
| (TCP、HTTP协议)                           |
+-------------------------------------------+

阅读全文

Dubbo-从入门到深入

Dubbo-从入门到深入,如何使用dubbo搭建一个分布式系统,dubbo特性介绍,dubbo原理剖析。

阅读全文

Leader-Follower线程模型概述

一、前言

IO线程模型一直在演化,由最开始的单线程模型,到BIO方式的单线程接受请求线程池线程具体处理单个请求的读写事件,再到NIO的单线程接受请求线程池里面的单个线程可以处理不同请求的读写事件,一个字没有最快,只有更快。最近发现还有个Leader-follower线程模型,其的出现是为了解决单线程接受请求线程池线程处理请求下线程上下文切换以及线程间通信数据拷贝的开销,并且不需要维护一个队列。 阅读全文

《Apache Thrift官方文档》简介

Apache Thrift

最后修改时间: 2017-11-11

 

简介

Thrift是一个轻量级、语言无关的软件栈,它具有一套为RPC通信生成代码的机制。Thrift为数据的传输、序列化,以及应用层处理提供了干净的抽象。采用这种抽象栈,它的代码生成器仅使用一种简洁的定义语言作为输入,便能够生成跨编程语言的代码,以构建互操作的RPC客户端和服务器。

Apache Thrift层级架构

阅读全文

《RabbitMQ官方指南》安装指南

原文链接   翻译:xiezc

目录(其中的文章后续翻译):

  • Windows下安装
  • Debian / Ubuntu下安装
  • 基于RPM的Linux下安装
  • Mac OS X下安装
  • Homebrew安装
  • Windows(手动)下安装
  • 通用Unix安装
  • So​​laris下安装
  • EC2安装
  • 升级
  • Blue-green (一种安全部署应用的方法)
  • 支持的平台
  • 更新日志
  • Erlang版本
  • 签名软件包
  • Java客户端下载
  • .NET客户端下载
  • Erlang客户端下载
  • 社区插件
  • 快照

阅读全文

在Windows上安装RabbitMQ

原文链接    翻译:xiezc

  下载服务器

描述 下载
Windows系统安装程序(来自Bintray 的RabbitMQ的服务器-3.7.4.exe (签名)
Windows系统安装程序(来自GitHub 的RabbitMQ的服务器-3.7.4.exe (签名)

阅读全文

动手实现一个 LRU cache

前言

LRU 是 LeastRecentlyUsed 的简写,字面意思则是 最近最少使用。通常用于缓存的淘汰策略实现,由于缓存的内存非常宝贵,所以需要根据某种规则来剔除数据保证内存不被撑满。如常用的 Redis 就有以下几种策略:

策略 描述
volatile-lru 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile-ttl 从已设置过期时间的数据集中挑选将要过期的数据淘汰
volatile-random 从已设置过期时间的数据集中任意选择数据淘汰
allkeys-lru 从所有数据集中挑选最近最少使用的数据淘汰
allkeys-random 从所有数据集中任意选择数据进行淘汰
no-envicition 禁止驱逐数据

摘抄自:github

阅读全文

《Thrift官方文档》Thrift支持的语言

Apache Thrift 支持语言

最后修改时间: 2018-03-06

Thrift支持多种编程语言,它具有一组引人注目的测试套件,展示了大量案例用法,这些案例包含了在不同语言、协议、传输器的数千种可能组合中的大多数。对每种语言,一般有一个Thrift所需的最低版本和支持类库,有些库是必需的、有些是可选的。下面的信息可以帮你评估能否在你的项目中使用Thrift。很明显,要维护这样一个矩阵是很复杂的,在某些情况下信息可能不准确。如果你发现有错误,请通过邮件列表告知我们。

阅读全文

《Thrift官方文档》 – docker构建说明

Docker 集成

由于Apache Thrift的构建需要依赖多种编程语言,为了最大限度地保证测试覆盖率,我们使用docker容器在多种不同平台上构建和测试Thrift。

Travis CI 集成

Travis CI 脚本的行为,由下面的环境变量和逻辑来决定。

阅读全文

浅尝一致性Hash原理

一、前言

在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。

但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。 阅读全文

Dubbo剖析-线程模型

一、前言

Dubbo默认的底层网络通讯是使用Netty来做的,在服务提供方NettyServer使用两级线程池,其中EventLoopGroup(boss)主要用来接受客户端的链接请求,并把接受的请求分发给EventLoopGroup(worker)来处理,boss和worker线程组我们称为IO线程。

如果服务提供方的逻辑能迅速完成,并且不会发起新的 IO 请求,则直接在 IO 线程上处理更快,因为这减少了线程池调度。

但如果处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到新线程池,否则 IO 线程阻塞,将导致不能接收其它请求。

阅读全文

分布式理论:CAP是三选二吗?

CAP是什么?

CAP理论,被戏称为[帽子理论]。CAP理论由Eric Brewer在ACM研讨会上提出,而后CAP被奉为分布式领域的重要理论[1] 。

阅读全文

Jarslink1.6.1版本特性

Jarslink 在4月初推出了新版本,增加支持Spring注解和模块多版本特性。欢迎参与开源项目,成为我们的Commiter

注解的使用

新版本加入了注解的支持,用户只需要在构建ModuleConfig的时候调用ModuleConfig.addScanPackage(String)方法即可,可以多次调用该方法来添加多个扫描包配置,该配置会被spring用来作为扫描包配置。

阅读全文

《深入分布式缓存》之 “缓存为王”

在商业的世界中,常说的一句话是“现金为王”。在互联网或者移动互联网乃至整个软件技术世界中,与之相近的一个说法就是“缓存为王”。什么是缓存呢?
阅读全文

return top