★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 1 概述 回顾下前面几篇关于微服务的介绍,我们可以了解到从当单体系统到微服务,再到服务网格的演进过程。那单体系统和微服务相比,有哪些区别呢,下面是对功能性的对比? 单体系统 微服务系统 程序、数据、配置集中管理 按照功能拆分、微服务化、松耦合 开发效率低下 分模块快速迭代 发布全量,启动慢 平滑发布,快速启动 可靠性差 熔断、限流、降级,超时重试,异常离群 服务内直接调用 轻量级通信 技术单一 跨语言 微服务有诸多的.…
★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC 1 什么是RPC通信 RPC:Remote Procedure Call Protocol,指的是远程过程调用协议,一般使用在分布式业务或者微服务架构风格中。 即一个节点通过网络调用的方式来请求另一个节点提供的服务的过程,也可以简单的理解为client访问server上提供的函数(像调用本地函数一样,去调用一个远端服务)。 2 RPC通信详解 2.1 RCP角色和职能 在RPC框架中主要有三个.…
★微服务系列 微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码) 1 说明 上一节我们我们详细学习了RPC的概念和原理,以及它能够提供的能力。也对目前业内主流的RPC的框架有了一定的了解。接下来以Dobbo为例子,来学习下怎么使用RPC框架来进行服务之间的通信。 2 Dubbo框架功能介绍 Apache Dubbo 是一款分布式微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微.…
★微服务系列 微服务1:微服务及其演进史微服务2:微服务全景架构 微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用 1 微服务带来的挑战 在第2篇《微服务2:微服务全景架构 》中,我们曾经分析过微服务化后所面临的挑战,有过如下的结论: 1.1 分布式固有复杂性 微服务架构是基于分布式的系统,而构建分布式系统必然会带来额外的开销。性能: 分布式系统是跨进程、跨网络的调用,受网络延迟和带宽的影响。可靠性: 由于高度依赖于网络状况,任何一次的远程调用都有可能…
1 真实案例 云办公系统用户实时信息查询功能优化发布之后,系统发生宕机事件(系统挂起,页面无法加载)。 1.1 背景 我们IM原有的一个功能,当鼠标移动到用户头像的时候,会显示出用户的基本信息。信息比较简单,只包含简单的用户名、昵称、性别、邮箱、电话等基本数据, 这是一个典型的数据查询,大概过程如下左侧,访问用户基本信息的时候会先去Redis中查一下,如果不存在,就把大约2W左右的用户数据一次性取出来,保存在Redis中,因为用户基本信息在同一张表上,用户信息表的数据量也很少,所以一直也没什么问题。 过程如下图左侧所示。 后续对功能做了优化,原有采集的信息除了用户的基本信息之外,还采集了教..…
1 Java注解基础 注解是JDK1.5版本开始引入的一个特性,用于对程序代码的说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有以下四方面: 生成javadoc文档,通过在代码里面标识元数据生成javadoc文档。 编译期的检查,通过标识的元数据让编译器在编译期间对代码进行验证。 编译时动态处理,编译时通过代码中标识的元数据动态处理,比如动态生成代码。 运行时动态处理,运行时通过代码中标识的元数据动态处理,比如使用反射技术注入实例。 注解的常见分类有三种: Java自带的标准注解,包括 @Override、@Deprecated和@SuppressWarnings,…
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈。为了解决这个问题,行业先驱门充分发扬了分而治之的思想,对大库表进行分割, 然后实施更好的控制和管理,同时使用多台机器的CPU、内存、存储,提供更好的性能。而分治有两种实现方式:垂直拆分和水平拆分。 1 为什么要分库分表 物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈。为了解决这个问题,行业先驱门充分发扬了分而治之的思想,对大库表进行分割, 然后实施更好的控制和管理,同时使用多台机器的CPU、内存、存储,提供更…
1 背景 分布式系统绕不开的核心之一的就是数据缓存,有了缓存的支撑,系统的整体吞吐量会有很大的提升。通过使用缓存,我们把频繁查询的数据由磁盘调度到缓存中,保证数据的高效率读写。 当然,除了在内存内运行还远远不够,我们今天就以具有代表性的缓存中间件Redis为例子,分析下,它是如何达到飞起的效率。 2 Redis高效性能分析 Redis之所以能够提供超高的执行效率,主要从以下几个维度来实现的: 存储模式:基于内存实现,而非磁盘 数据结构:基于不同业务场景的高效数据结构 动态字符串(REDIS_STRING):整数(REDIS_ENCODING_INT)、字符串(REDIS_ENCODING_RA…