- 浏览: 91391 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- 全文检索 (1)
- java (29)
- xml (2)
- json (2)
- redis springmvc (1)
- Redis (5)
- 开发常识 (1)
- tomcat (2)
- 单元测试Junit (2)
- 设计模式 (2)
- spring (10)
- jvm (2)
- eclipse (4)
- echart (1)
- mybatis (1)
- mysql (3)
- web (1)
- js (2)
- PL/SQL (2)
- 其他 (1)
- 人生 (1)
- 安全 (2)
- jsp (2)
- 硬件电脑 (1)
- linux (3)
- git (10)
- oracle (8)
- ant (1)
- maven (2)
- 正则表达式 (2)
- chrome (1)
- 面试 (6)
- 多线程 (19)
- bug (11)
- java工具类 (3)
- 算法 (1)
- bug,git (1)
- shell (2)
- springmvc (2)
- Java8 (1)
- 消息队列-rocketmq (1)
- es (1)
- dubbo (0)
- spring cloud (0)
- hashmap (0)
- springboot (1)
- velocity (0)
一传统垂直mvc项目
垂直架构图:表示层->业务逻辑层->数据访问层->mysql(oracle/db)
通常mvc并不包括数据访问层,运行也比较简单,直接运行在一个tomcat等web容器中即可,适合小型项目。
垂直架构的缺点:
随着业务的不断发展,应用规模越来越大,问题越来越凸显,比如:
a.复杂应用的开发维护成本变高,部署效率逐渐降低,一个功能出问题,整个系统就得重新打包
b.团队协作效率变差,公共功能重复开发,代码重复率太高
c.系统可靠性变差,流量,负载均衡,数据库压力变大,因为在一个进程中,如果出现内存溢出等故障,将导致整个节点崩溃,然后集群中的其它节点也会如此
d.维护和定制困难,无法随时拆分,修改一处,牵一发动全身
e.新功能上线周期变长,因为公共功能的变更导致测试工作量激增,因为重复代码多,一个地方修改需要同时修改多个地方,然后修改后继续测试
f.新功能无法独立打包测试,需要和整个系统进行一起打包测试,出现bug会导致整个系统重新部署,强耦合导致效率低下。
二 RPC架构
RPC(Remote Procedure Call Protocol) --远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
该架构分为三部分
服务提供者,运行在服务器端,提供服务接口定义与服务实现类。
服务中心,运行在服务器端,负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。
服务消费者,运行在客户端,通过远程代理对象调用远程服务。
RPC架构的核心技术点
a.远程服务提供者需要以某种形式提供服务的调用相关信息,包括但是不限于服务接口定义,数据结构或者中间态的服务定义文件,服务调用者需要通过一定的途径获取远程服务的调用相关信息,例如接口的定义jar包等
b.远程代理对象:服务调用者调用调用的服务实际是远程服务的本地代理,对于Java而言,它的实现就是jdk的动态代理,通过动态代理拦截机制,将本地调用封装成远程服务调用
c.通信:RPC框架与具体的协议无关,只要双方遵从约定好的即可,比如可以是http invoke,可以是rmi invoke,也可以是其他任意的二进制压缩协议
d.序列化:远程通信,需要将对象转换成二进制数据进行网络传输,不同的序列化框架支持的数据类型,数据包大小,异常类型或者性能都不同
不同的RPC框架针对的场景不同,因此技术选择也各不相同,一些框架支持多种序列化框架,甚至支持用户自定义序列化框架
RPC框架的问题
a.在大规模服务化之前,应用可能只通过RPC框架简单的暴露和引用远程服务,通过配置的url地址进行远程调用,路由通过F5硬件进行简单的负载均衡,
当服务越来越多,服务的url越来越多,管理越来越困难,负载均衡单点压力变大,此时需要一个服务的注册中心,动态的注册和发现服务,使服务位置透明,消费者在本地缓存服务提供者列表,实现负载均衡
,可以降低对F5硬件负载的依赖,降低硬件成本。
b.随着业务的发展,服务间的依赖关系变得错综复杂,甚至分不清哪个应用需要在哪个应用之前启动,需要一个分布式消息跟踪系统可视化服务调用链,用于来分析,业务调用路径梳理,防止服务架构腐化。
c.服务的调用量越来越大,服务的容量问题就出现了,某个服务需要多少机器支撑,什么时候该加机器,服务上线容易下线难,上线的审批,下线的通知,需要统一的服务生命周期管理流程进行管控,不同的服务
安全权限不同,如何保证敏感数据服务不被误用,服务的访问安全策略如何定制,服务化后随之而来的就是服务治理问题,纯粹的RPC框架服务治理能力都不强悍,需要通过服务框架+服务治理来完成
常用的rpc框架
Thrift,Hadoop的AVro-RPC ,Hessian,gRPC等
单论rpc的话,没太多可说的,可是如果加上服务治理,那复杂度就几何倍数增长了。服务治理里面东西太多了,动态注册、动态发现、服务管控、调用链分析等等,单凭rpc框架解决不了
,所以现在常说的服务化框架,通常指的是rpc+服务治理2个点。
三SOA服务化架构
rpc+服务治理
四MSA微服务架构
MSA也是一种服务化架构风格,服务划分:原子服务,粒度细;独立部署,主要是容器
SOA与MSA对比
a.服务拆分粒度:soa首要解决的是异构系统的服务化,微服务专注服务的拆分,原子服务;
b.服务依赖:soa主要处理已有系统,重用已有的资产,存在大量服务间依赖,微服务强调服务自治,原子性,避免依赖耦合的发生
c.服务规模:soa服务粒度大,大多数将多个服务合并打包,因此服务实例数有限,微服务强调自治,服务独立部署,导致规模膨胀,对服务治理有挑战;
d.架构差异:微服务通常是去中心化的,soa通常是基于企业服务总线(Enterprise Service Bus,ESB)的
e.服务治理:微服务的动态治理,实时管控,而soa通常是静态配置治理;
f.交付:微服务小团队作战
垂直架构图:表示层->业务逻辑层->数据访问层->mysql(oracle/db)
通常mvc并不包括数据访问层,运行也比较简单,直接运行在一个tomcat等web容器中即可,适合小型项目。
垂直架构的缺点:
随着业务的不断发展,应用规模越来越大,问题越来越凸显,比如:
a.复杂应用的开发维护成本变高,部署效率逐渐降低,一个功能出问题,整个系统就得重新打包
b.团队协作效率变差,公共功能重复开发,代码重复率太高
c.系统可靠性变差,流量,负载均衡,数据库压力变大,因为在一个进程中,如果出现内存溢出等故障,将导致整个节点崩溃,然后集群中的其它节点也会如此
d.维护和定制困难,无法随时拆分,修改一处,牵一发动全身
e.新功能上线周期变长,因为公共功能的变更导致测试工作量激增,因为重复代码多,一个地方修改需要同时修改多个地方,然后修改后继续测试
f.新功能无法独立打包测试,需要和整个系统进行一起打包测试,出现bug会导致整个系统重新部署,强耦合导致效率低下。
二 RPC架构
RPC(Remote Procedure Call Protocol) --远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
该架构分为三部分
服务提供者,运行在服务器端,提供服务接口定义与服务实现类。
服务中心,运行在服务器端,负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。
服务消费者,运行在客户端,通过远程代理对象调用远程服务。
RPC架构的核心技术点
a.远程服务提供者需要以某种形式提供服务的调用相关信息,包括但是不限于服务接口定义,数据结构或者中间态的服务定义文件,服务调用者需要通过一定的途径获取远程服务的调用相关信息,例如接口的定义jar包等
b.远程代理对象:服务调用者调用调用的服务实际是远程服务的本地代理,对于Java而言,它的实现就是jdk的动态代理,通过动态代理拦截机制,将本地调用封装成远程服务调用
c.通信:RPC框架与具体的协议无关,只要双方遵从约定好的即可,比如可以是http invoke,可以是rmi invoke,也可以是其他任意的二进制压缩协议
d.序列化:远程通信,需要将对象转换成二进制数据进行网络传输,不同的序列化框架支持的数据类型,数据包大小,异常类型或者性能都不同
不同的RPC框架针对的场景不同,因此技术选择也各不相同,一些框架支持多种序列化框架,甚至支持用户自定义序列化框架
RPC框架的问题
a.在大规模服务化之前,应用可能只通过RPC框架简单的暴露和引用远程服务,通过配置的url地址进行远程调用,路由通过F5硬件进行简单的负载均衡,
当服务越来越多,服务的url越来越多,管理越来越困难,负载均衡单点压力变大,此时需要一个服务的注册中心,动态的注册和发现服务,使服务位置透明,消费者在本地缓存服务提供者列表,实现负载均衡
,可以降低对F5硬件负载的依赖,降低硬件成本。
b.随着业务的发展,服务间的依赖关系变得错综复杂,甚至分不清哪个应用需要在哪个应用之前启动,需要一个分布式消息跟踪系统可视化服务调用链,用于来分析,业务调用路径梳理,防止服务架构腐化。
c.服务的调用量越来越大,服务的容量问题就出现了,某个服务需要多少机器支撑,什么时候该加机器,服务上线容易下线难,上线的审批,下线的通知,需要统一的服务生命周期管理流程进行管控,不同的服务
安全权限不同,如何保证敏感数据服务不被误用,服务的访问安全策略如何定制,服务化后随之而来的就是服务治理问题,纯粹的RPC框架服务治理能力都不强悍,需要通过服务框架+服务治理来完成
常用的rpc框架
Thrift,Hadoop的AVro-RPC ,Hessian,gRPC等
单论rpc的话,没太多可说的,可是如果加上服务治理,那复杂度就几何倍数增长了。服务治理里面东西太多了,动态注册、动态发现、服务管控、调用链分析等等,单凭rpc框架解决不了
,所以现在常说的服务化框架,通常指的是rpc+服务治理2个点。
三SOA服务化架构
rpc+服务治理
四MSA微服务架构
MSA也是一种服务化架构风格,服务划分:原子服务,粒度细;独立部署,主要是容器
SOA与MSA对比
a.服务拆分粒度:soa首要解决的是异构系统的服务化,微服务专注服务的拆分,原子服务;
b.服务依赖:soa主要处理已有系统,重用已有的资产,存在大量服务间依赖,微服务强调服务自治,原子性,避免依赖耦合的发生
c.服务规模:soa服务粒度大,大多数将多个服务合并打包,因此服务实例数有限,微服务强调自治,服务独立部署,导致规模膨胀,对服务治理有挑战;
d.架构差异:微服务通常是去中心化的,soa通常是基于企业服务总线(Enterprise Service Bus,ESB)的
e.服务治理:微服务的动态治理,实时管控,而soa通常是静态配置治理;
f.交付:微服务小团队作战
发表评论
-
linux 文件 dos unix格式,unix和dos下文本文件得区别
2023-09-06 23:23 153问题: 当在window ... -
java 枚举values()方法
2019-07-30 20:41 414工作中,同事 ... -
newHashMapWithExpectedSize
2019-07-30 19:45 1280newHashMapWithExpectedSize VS ... -
java 8 stream应用
2019-07-15 11:43 01.生成map List<BusinessFacili ... -
技术知识点汇总
2019-02-12 15:47 01. LTS(light-task-scheduler) ... -
集群中session共享
2018-12-20 23:25 0当项目演进时,一个节点出错,如何保证域名能访问到别的节点。 一 ... -
父类子类静态代码块执行
2018-08-22 15:23 0先看一个基础面试题: package com.jbx.te ... -
数组元素的初始化
2018-07-10 17:16 490直接上代码 ,char的初始化值是'\u0000' p ... -
统计一个字符串中每个字符串出现的次数
2018-07-03 17:43 600经常遇到这个问题:总结一下 思路和代码 import ja ... -
DateUtil
2018-03-15 20:53 493记录一下常用的工具类,方便使用的时候可以获取。 pack ... -
indexOf判断一个字符串是否包含另一个字符串
2018-02-26 08:58 510jdk中的表述如下 indexOf public int in ... -
eclipse 添加反编译
2018-01-25 08:57 320为eclipse中*.clsas/*.class withou ... -
Java读取配置文件
2018-01-24 16:00 309Java读取配置文件test.properties 文件tes ... -
HTTP请求头
2017-12-29 16:49 0Request Headers 当访问一个action时,在谷 ... -
阿里巴巴Java开发手册(终极版)
2017-11-13 16:37 483前言 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队 ... -
JavaEE 基础实用教程(二)------Jsp应用基础
2017-11-03 17:22 656习题 1.画出HTML文件的基 ... -
JavaEE 基础实用教程(一)---简述
2017-11-03 14:55 592第一部分 实用教程 第 ... -
实现普通用户登录
2017-11-03 11:09 0页面元素: 用户名,密码,验证码,登录 1.创建登录页 ... -
Java容器-- 99集
2017-10-26 14:21 0API接口 Collection Set List H ... -
自己编写一个Map
2017-10-25 15:34 555在爱酷学习网上学习Java视频,其中有一个自己实现map的功能 ...
相关推荐
《大型网站技术架构演进与性能优化》这本书深入探讨了互联网行业中大型网站在技术架构上的发展路径和性能优化策略。随着互联网的飞速发展,大型网站的架构设计和性能优化成为了决定企业竞争力的关键因素。本篇文章将...
闲鱼从零到千万DAU的应用架构演进.pdf 闲鱼从零到千万DAU的应用架构演进.pdf这篇文章主要介绍了闲鱼从零到千万DAU的应用架构演进,文章从闲鱼业务介绍开始,讲述了闲鱼市场本质、高性价比的商品市场、闲鱼业务特点...
淘宝数据库架构演进历程及OceanBase架构PPT课件.pptx 本资源摘要信息涵盖淘宝数据库架构演进历程的三个阶段,包括早期单机式的 MySQL 使用方式、Mysql 迁移到 Oracle 并升级到小型机、高端存储,最后到异构数据库...
"IT系统架构演进与趋势" 本文将详细解释IT系统架构的演进与趋势,包括企业IT架构的趋势和新特点、架构模式、拥抱开源重塑企业IT架构、企业IT愿景和演进策略等。 企业IT架构的趋势和新特点 企业IT架构正面临着重大...
手机淘宝作为阿里巴巴集团旗下的重要电商平台,其技术架构演进一直受到业界广泛关注。H5容器是指在移动设备上运行的网页应用容器,它允许网页应用在手机浏览器上运行。随着移动互联网的发展,用户对于在手机端进行...
唯品会微服务架构演进之路 微服务架构是当前软件 industrie 中最流行的架构模式之一。唯品会微服务架构演进之路PDF文件中,详细介绍了唯品会在微服务架构方面的实践经验和解决方案。 微服务架构的演进 唯品会...
旅游度假商品中心的架构演进涉及到了技术升级、业务模式创新、用户体验优化等多个方面。 在描述美团旅游度假商品中心架构演进的过程中,可以提炼出如下几个主要的知识点: 1. 微服务架构的应用与演进:随着业务的...
字节跳动数据血缘架构演进之路 字节跳动数据血缘架构演进之路是字节跳动数据链路中的一部分,旨在提供数据血缘能力,以帮助用户找数据、理解数据、以及使数据发挥价值。数据血缘架构的演进之路可以分为三个阶段,每...
在探讨58到家订单中心架构演进的过程中,涉及到的关键技术知识点可以从以下几方面进行展开: ### 订单中心业务介绍 订单中心的核心业务是处理数据量大且并发量大的订单信息。它主要面临的问题包括不同业务订单的...
服务端高并发分布式架构演进之路的知识点可以从以下几个方面来详细说明: 1. 基本概念介绍 - 分布式架构:在不同的服务器上部署系统各个部分,以提升系统伸缩性和可用性。 - 高可用性:系统或服务在各种情况下都...
### 微信ANDROID客户端架构演进及其对开发流程的影响 #### 概述 随着移动互联网技术的迅猛发展,微信作为一款国民级应用,其ANDROID客户端的架构经历了多次重大的变革与优化。这些变革不仅反映了软件工程实践中...
### 云上的架构演进 #### 一、背景与历程 在过去三年中,伴随着云服务的飞速发展,我们作为一家初创企业的技术团队,在不断学习和实践中实现了从自建机房到全面采用云服务的转变,并在此过程中积累了宝贵的经验。...
### 从大型电商架构演进看互联网高可用架构设计 #### 一、互联网架构演进 **五种架构模型介绍** 1. **单体架构**:最初期的软件架构模式,将所有功能集成在一个紧密耦合的应用程序中。易于理解和部署,但随着系统...
"分布式交易系统架构演进过程" 分布式交易系统架构演进过程是指好买财富基金交易系统从传统金融到互联网金融系统发展历程的演进过程。该架构演进过程包括传统金融系统、分布式交易系统、创新交易系统三个阶段。 ...
MySQL高可用架构演进是数据库领域中的一个重要话题,尤其是在企业级应用中,数据的稳定性、一致性和可访问性是至关重要的。MySQL作为广泛使用的开源关系型数据库管理系统,其高可用性设计是确保业务连续性和数据安全...
### 移动通信系统架构演进 随着信息技术的迅速发展,移动通信系统经历了多次重大变革。从最初的2G网络到现今的5G网络,每一次变革不仅带来了通信速度和容量的显著提升,还促进了多种新技术和服务的诞生。本文将重点...
【语雀技术架构演进】是关于一个名为“语雀”的知识管理工具从原型阶段到商业化阶段的技术发展历程的概述。语雀最初是一个内部项目,旨在为阿里员工提供文档编写和知识沉淀的平台。随着其发展,语雀的技术架构经历了...
《饿了么数据库架构演进》的讲解主要围绕着一个核心主题展开,即如何在没有高端工具的情况下,通过一系列的架构调整和优化,逐步构建起一个稳定、高效、具有容灾能力的数据库系统。以下是这个演进过程的详细阐述: ...