Rpc编程系列文章第一篇:RPC概述和架构演变

简介: Rpc编程系列文章第一篇:RPC概述和架构演变

前言

不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。

如何找到孙帅本人

本文内容整理自《孙哥说Dubbo系列视频课程》,老师实力十分雄厚,B站搜孙帅suns可以找到本人,或者直接添加老师微信号suns45

一:引言

1:本系列文章的目标

  1. RPC的架构理解
  2. 设计RPC的核心技术难点
    通信+协议+序列化方式+方便调用
  3. 多种序列化方式(Hession、Thirft、Prototype)
    掌握这些常用的序列化方式,JSON和JDK自己的序列化方式,都算。
  4. 多种RPC解决方案(HessionRPC,Grpc)
    一整套通信+协议+序列化方式+方便调用的解决方案,对既有技术的掌握,HessionRPC的RPC是使用的Hession的序列化方案,这种方案是在Dubbo广泛使用的,但是有点过时了。
  5. 注册中心,熔断,限流等设计思想
    RPC最核心的过程,为了当前的RPC原始的解决方案增加了新的功能,在我们的微服务领域见怪不怪了,此时RPC已经不单单是RPC,已经往SOA架构过度。
  6. 自研RPC

2:RPC的概念

RPC是远程调用(Remote Procedure Call)的缩写形式,是一种跨进程(JVM)的方法调用形式。是目前在Java分布式,微服务体系中,重要的一种通信方式。

Java体系中的进程就是指的JVM,在Java体系中的跨进程,我们可以简单的理解为跨虚拟机之间的访问。

二:架构的演变过程

1:单体架构

1):概念

也叫做单体应用:就是系统中所有的功能(代码)合在了一起。并且生成一个jar或者war。部署在一个tomcat中(JVM一个进程)

首页门户和后台管理系统在同一个web服务当中:

2):特点

一个jar,一个war包含所有子系统,在一个服务中。

3):优缺点

随着互联网的发展,客户群体和访问量的增加,很多问题暴露了出来:

1:热点问题 (某个子系统访问量大,导致其他子系统的访问出现问题)

2:扩展性差,新资源的分配力度不精确(门户系统访问量,增加机器,增加服务器tomcat。但是新增的资源,不能精确给到门户)

:3:模块(子系统)合度高、相互影响(修改某一个子系统的代码,产生了问题,影响其他的子系统)

4:维护部署成本高(某次发布,只更新了后台管理的(订单模块),但是因为是单体架构,所以会发布整个系统。

5:技术栈受限,必须使用相同的编程语言开发不同的子系统。

2:单体架构水平扩展

1):水平拓展的含义

LB是我们的负载均衡器

2):水平拓展的意义

解决不了单体架构的问题,但是可以解决单体架构在单个服务计算机资源特别是内存、CPU、网络连接数遇到瓶颈时的问题。

3:垂直架构

1):概念

把一个单体架构的应用,按照子系统进行了划分,每个子系统都独立部署在自己的tomcat中。多个子系统共享数据库等存储资源

2):如何操作

门户和后台管理系统一人一个jar包,当前分割粒度是基于子系统进行分割(还没有达到模块的粒度)

3):优缺点

1:把一个单体架构的应用,按照子系统进行了划分,每个子系统都独立部署在自己的tomcat(JVM 进程)中。多个子系统共享数据库等存储资源.

2:垂直架构做水平扩展。

3:有限的解决了单体架构的部分问题。

热点问题 (子系统级别的热点问题解决了,但是模块的热点问题没有解决)。

扩展性差 (子系统级别,增加机器,资源分配 相对精确)

技术栈也不要求统一语言 (门户 PHP,后台管理 Java)

4:RPC架构

1:跨进程调用是走HTTP还是TCP?

都可以,各有利弊。这里解释一下,Http底层也是TCP但是做了封装,Http是端连协议,及时是Http1.1也是有限长连接,时长上比Tcp协议短多了。

2:优缺点比较

相关文章
|
6月前
|
人工智能 运维 安全
AI 安全架构概述
AI 安全架构涵盖数据采集、模型训练、推理部署等阶段,确保安全性、隐私与合规。其核心组件包括数据层、模型层、推理层、应用层和运维层,针对数据安全威胁(如数据投毒)、模型窃取、对抗攻击及系统漏洞等风险,提出数据加密、对抗训练、联邦学习等防御策略,并强调开发前、开发中和部署后的最佳实践,以降低 AI 解决方案的安全风险。
623 13
|
4月前
|
分布式计算 Go C++
初探Go语言RPC编程手法
总的来说,Go语言的RPC编程是一种强大的工具,让分布式计算变得简单如同本地计算。如果你还没有试过,不妨挑战一下这个新的编程领域,你可能会发现新的世界。
110 10
|
10月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
534 6
|
10月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
245 1
|
5月前
|
存储 人工智能 自然语言处理
Cursor这类编程Agent软件的模型架构与工作流程
编程Agent的核心是一个强大的大语言模型,负责理解用户意图并生成相应的代码和解决方案。这些模型通过海量文本和代码数据的训练,掌握了广泛的编程知识和语言理解能力。
480 1
|
6月前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
11月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
427 0
|
6月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
10月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
10月前
|
存储 监控 Linux
Docker技术架构概述
【10月更文挑战第22天】Docker采用CS架构,Client与Daemon交互,Compose管理多容器应用。