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:优缺点比较

相关文章
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
2月前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
1天前
|
设计模式 人工智能 算法
编程之旅:从代码到架构的感悟
【9月更文挑战第33天】在编程的世界里,代码不仅是实现功能的工具,更是连接思想与现实的桥梁。本文将通过个人的编程经历,分享从编写第一行代码到设计系统架构的旅程,探索编程背后的哲学和技术演变。我们将一起思考,如何在代码的海洋中找到自己的航向,以及在这个过程中如何不断成长和适应变化。
|
7天前
|
机器学习/深度学习 人工智能 云计算
后端架构的演变与未来趋势
本文深入探讨了后端架构的历史演变和未来发展趋势,从单体应用到微服务架构,再到无服务器架构,分析了每种架构的特点、优势及应用场景。同时,展望了未来可能的发展方向,如人工智能在后端开发中的应用、云计算技术的深度融合等,为后端开发者提供了宝贵的参考和启示。
|
22天前
|
人工智能 边缘计算 Serverless
后端架构演变与未来趋势
本文旨在通过对后端架构的发展历程进行梳理,探讨从单体应用到微服务架构的转变过程及其背后的驱动因素。同时,分析当前后端技术中的热门话题如容器化、Serverless架构和人工智能集成等,并对未来可能的技术趋势进行展望。通过总结现有技术的优缺点及未来可能面临的挑战,为后端开发者提供有价值的参考。这也太棒了吧!
|
11天前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。
|
2月前
|
监控 云计算 开发者
探索后端开发中的服务架构演变
【8月更文挑战第22天】在数字化浪潮不断推进的今天,后端开发作为技术支撑的核心,其服务架构经历了从单一应用到分布式微服务的深刻变革。本文将带你走进后端世界,一探究竟,看看那些影响深远的架构模式是如何塑造我们的数字生活的。我们将一起思考,如何在不断变化的技术环境中找到适应之道,以及这些架构变迁给开发者带来的启示和挑战。
|
2月前
|
设计模式 算法 PHP
深入理解PHP中的数组操作探索编程之美:从代码到架构的思维转变
【8月更文挑战第24天】在PHP编程中,数组是基础且强大的数据结构。本文将通过浅显易懂的方式,介绍如何在PHP中高效地操作数组,包括创建、遍历、排序和过滤等常见任务。无论你是初学者还是有经验的开发者,这篇文章都会带给你新的启示。 【8月更文挑战第24天】在编程的世界中,代码不仅仅是冰冷的字符排列,它承载着思想、解决问题的智慧和创新的灵魂。本文将通过个人的技术感悟,带领读者从编写单一功能的代码片段出发,逐步深入到整个软件架构的设计哲学,探索如何将代码块转化为高效、可维护和可扩展的系统。我们将一起见证,当代码与架构思维相结合时,如何引发技术实践的革命性飞跃。
|
2月前
|
前端开发 C# 开发者
WPF开发者必读:MVVM模式实战,轻松构建可维护的应用程序,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离关注点,提高了代码的可维护性和可扩展性。本文详细介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定与逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种模式,开发者可以更高效地构建桌面应用程序。希望本文能帮助你在WPF开发中更好地应用MVVM模式。
69 0
|
2月前
|
存储 前端开发 数据库
神秘编程世界惊现强大架构!Web2py 的 MVC 究竟隐藏着怎样的神奇魔力?带你探索实际应用之谜!
【8月更文挑战第31天】在现代 Web 开发中,MVC(Model-View-Controller)架构被广泛应用,将应用程序分为模型、视图和控制器三个部分,有助于提高代码的可维护性、可扩展性和可测试性。Web2py 是一个采用 MVC 架构的 Python Web 框架,其中模型处理数据和业务逻辑,视图负责呈现数据给用户,控制器则协调模型和视图之间的交互。
28 0
下一篇
无影云桌面