互联网基础架构演进(1)|学习笔记

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 快速学习互联网基础架构演进(1),从早期的互联网到目前的互联网的过程,为什么会出现这个情况,然后有助于分布式的学习,首先早期的传统项目,很多小型公司还在使用,受众面较小,不需要很高的负载,有一个垂直架构就可以,如果出现问题也不会造成太大的损失,这是一个关于产品架构的问题。

开发者学堂课程【基于 Zookeeper、Dubbo 构建互联网分布式基础架构互联网基础架构演进(3)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/635/detail/10159


互联网基础架构演进(1)

 

内容介绍

一、传统垂直 mvc 项目

二、RPC架构

 

一、传统垂直 mvc 项目

1.垂直架构图

垂直架构项目:

比如像 cim oa 等访问量比较少,用户量没有那么多的项目。

优点:各个层都在一个图里,简单,清晰,明了。

缺点:当项目不断演进时,应用规模越来越大,问题越来越凸显,比如

1) 复杂应用的开发维护成本变高部署效率逐渐降低一个功能出问题,整个系统就得重新打包。

2) 团队协作,效率,变差公共功能,重复开发代码重复率太高。

3) 系统可靠性变差流量负载均衡数据库压力变大,因为在一个进程中,如果出现内存一出的故障,将导致整个节点崩溃,然后集群中的其他几点也会如此。

4) 维护和定制困难,无法随时拆分,修改一处,牵一发而动全身。

5) 新功能上线周期变长,因为公共功能的变更,导致测试工作量集中,因为重复代码,一个地方修改需要同时修改多个地方,然后修改后继续测试新功能无法独立打包测试需要和一整个系统进行打包测试出现 bug 会导致整个系统重新部署抢,强耦合导致效率低下。

image.gif

 

二、RPC 架构

RPC是远程过程调用(Remote Procedure Call)的缩写形式。它是一种通过网络从远程计算机程序上请求服务而不需要了解底层网络技术的协议。

SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。

RPC 协议假定某些传输协议的存在,如 TCP 或 UDP 为通信程序之间携带信息数据在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC 使得开发包括网络分布是多程序在内的,应用程序更加容易,采用客户机服务器模式,请求程序就是一个客户机,而程序提供程序就是一个服务器。

首先,客户机调用进程发送一个有定成参数的掉用信息到信息服务进程,然后等待应答信息,在服务器端进程保持睡眠状态,直到调用信息到达为止。当一个屌用信息到达服务器获得进程,仓鼠计算结果发送答复信息,然后等到下一个调用信息,最后是客户端调用进程,接收答复信息获得进程结果,然后调用执行继续进行1、RPC 分为三部分

服务提供者:运行在服务器端,提供服务接口定义和服务实现类。

服务中心:运行在服务器端负责将本地服务发布成远程服务管理,远程服务提供给服务消费者使用。

服务消费者:运行在客户端通过远程代理对象,调用远程服务。

image.gif2、RPC 的核心技术点

1)远程服务提供者需要以某种形式提供服务的调用相关信息,包括但是不限于服务接口定义,数据结构,或者中间态的服务定义文件服务调用者需要通过- -定的途径获取远程服务的调用相关信息,例如接口的定义jar包等。

2) 远程代理对象:服务调用者调用的服务实际是远程服务的本地代理,对于java而言,他的实现就是jdk 动态代理,通过动态代理拦截机制,将本地调用封装成远程服务调用。

3) 通信: RPC 框架与具体的协议无关,只要双方遵从约定好的即可,比如可以是 http invoke, 可以是 rmi invoke,也可以是其他任意的二进制压缩协议。

4) 序列化:远程通信,需要将对象转换成二进制数据进行网络传说,不同的所以需要将数据序列化,不同的序列化框架支持的数据类型,数据包大小,异常类型或者性能都不同。

不同的 PC 框架针对的场景不同,因此技术选择也各不相同,-些框架支 持多种序列化框架,甚至支持用户自定义序列化框架

3. RPC 框架的问题

在大规模服务化之前,应用可能只通过RPC框架简单的暴露和引用远程服务,通过配置的ur1地址进行远程调用,路由通过F 5硬件负载均衡进行简单的负载均衡。

当服务越来越多,服务的ur1越来越多,管理越来越困难,负载均衡单点压力变大,此时需要一个服务的注册中心 ,动态的注册和发 现服务,使服务位置透明, 消费者在本地缓存服务提供者列表,实现软负载均衡,可以降低对FS硬件负载的依赖,降低硬件成本。

随着业务的发展,服务间的依赖关系变的错综复杂,甚至分不清哪个应用需要在哪个应用之前启动,需要一个分布式消息跟踪系统可视化战士服务调用链,用于以来分析,业务调用路径梳理,防止服务架构腐化服务的调用量越来越大,服务的容量问题就出现了某个服务需要多少机器支撑,什么时候该加机器服务。

上线容易下线难,上线的审批,下线的通知,需要统一的服务生命周期管理流程进行管控,不同的服务安全权限不同,如何保证敏感数据服务不被误用,服务的访问安全策略如何定制。

服务化后随之而来的就是服务治理问题,纯粹的RPC框架服务治理能力都不强悍,需要通过服务框架+服务治理来完成。

4.常用的 rpc 框架

1. Thrift;

2. Hadoop的Avro-RPC;

3. Hessian;

4. gRPC;

单论 rpc 的话,没太多可说的,可是如果加上服务治理,那复杂度就几何倍数增长了。服务治理里面东西太多了,动态注册,动态发现,服务管控,调用链分析等等问题这些问题,单凭rpc框架解决不了,所以现在常用的说的服务化框架,通常指的是rpc+服务治理2个点。

SOA 服务化架构

微服务

MSA也是一-种服务化架构风格,正流行ing,服务划分

1.原子服务,粒度细;

2.独立部署,主要是容器;

MSA 与 SOA 的对比:

服务拆分粒度: soa 首要解决的是异构系统的服务化,微服务专注服务的拆分,原子服务;

服务依赖: soa 主要处理已有系统,重用已有的资产,存在大量服务间依赖,微服务强调服务自治,原子性,避免依赖耦合的产生;

服务规模: soa服务粒度大,大多数将多个服务合并打包,因此服务实例数有限,微服务强调自治,服务独立部署,导致规模膨胀,对服务治理有挑战;

架构差异:微服务通常是去中心化的,soa 通常是基于 ESB 的; !

服务治理:微服务的动态治理,实时管控,而soa通常是静态配置治理;

交付:微服务的小团队作战。

感觉在有了 docker 后,微服务这个概念突然火了起来,总结就是微服务+容器+DevOps.

image.gif

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
8月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
188 0
|
8天前
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
123 81
|
8月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
317 0
|
5月前
|
数据库 Java 数据库连接
Hibernate 实体监听器竟如魔法精灵,在 CRUD 操作中掀起自动化风暴!
【8月更文挑战第31天】在软件开发中,效率与自动化至关重要。Hibernate 通过其强大的持久化框架提供了实体监听器这一利器,自动处理 CRUD 操作中的重复任务,如生成唯一标识符、记录更新时间和执行清理操作,从而大幅提升开发效率并减少错误。下面通过示例代码展示了如何定义监听器类,并在实体类中使用 `@EntityListeners` 注解来指定监听器,实现自动化任务。这不仅简化了开发流程,还能根据具体需求灵活应用,满足各种业务场景。
45 0
|
5月前
|
NoSQL API 数据库
揭秘!Flask如何一键解锁RESTful API高效微服务?打造未来互联网架构的隐形力量!
【8月更文挑战第31天】本文介绍如何使用 Flask 构建高效且易维护的 RESTful 微服务,涵盖环境搭建、基本应用创建及代码详解。通过示例展示用户管理系统的 CRUD 操作,并讨论数据库集成、错误处理、认证授权、性能优化及文档生成等高级主题,助力开发者打造强大的后端支持。
80 0
|
5月前
|
边缘计算 安全 物联网
未来互联网架构的演变
【8月更文挑战第16天】随着科技的不断进步,互联网作为现代社会不可或缺的基础设施,其架构也在不断地发展与演变。本文将探讨未来互联网架构可能的变化方向,包括边缘计算、软件定义网络(SDN)、网络功能虚拟化(NFV)等技术趋势,以及这些技术如何影响互联网的稳定性、安全性和效率。同时,文章还将讨论这些变革对用户隐私保护和数据治理的潜在影响,并展望互联网架构的未来发展趋势。
|
5月前
|
设计模式 安全 网络安全
|
7月前
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
|
8月前
|
架构师 开发工具 C++
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
|
8月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)

热门文章

最新文章