当前位置: 首页 > news >正文

Dubbo(一)项目架构演变过程

Dubbo(一)项目架构演变过程

  • 架构演变过程
    • 单体架构
    • 垂直架构
    • SOA(分布式架构)
    • 微服务架构

架构演变过程

dubbo是一款高性能的java rpn框架。
随着互联网的发展,用户群体逐渐壮大,网站的流量成倍增长,常规的单体架构已无法满足请求压力 暴增和业务的快速迭代,架构的变化势在必行。

单体架构

单体架构所有模块和功能都集中在一个项目中,部署时也是将项目所有功能整体部署到服务器中。
优点

  • 小项目开发快,成本低
  • 架构简单
  • 易于测试
  • 易于部署
    缺点
  • 大项目模块耦合严重,不易开发、维护,沟通成本高
  • 新增业务困难
  • 核心业务与边缘业务混合在一块,出现问题相互影响

垂直架构

根据业务吧项目垂直切割成多个项目,因此这种架构称之为垂直架构。
为了避免上面提到的那些问题,我们开始做模块的垂直划分,做垂直划分的原则是基于拉勾的业务特 性,核心目标,第一个是为了业务之间互不影响,第二个是在研发团队的壮大后为了提高效率,减少之 间的依赖。
优点:

  • 系统拆分实现了流量分担,解决了并发问题
  • 可以针对不同系统进行优化
  • 方便水平拓展,负载均衡,容错率提高
  • 系统间相互独立,互不影响,新的业务迭代高效
    缺点:
  • 服务系统接口调用监控不到位、调用方式不同意
  • 服务系统之间接口调用硬编码
  • 搭建集群之后,实现负载均衡比较复杂
  • 服务监控不到位
  • 数据库资源浪费,充斥慢查询,主从同步延迟大

SOA(分布式架构)

SOA全称为Service Oriented Architecture ,即面向服务的架构 。它是在垂直划分的基础上,将每个项目 拆分出多个具备松耦合的服务,一个服务通常以独立的形式存在于操作系统进程中。各个服务之间通过网 络调用,这使得构建在各种各样的系统中的服务可以 以一种统一和通用的方式进行交互。
我们在做了垂直划分以后,模块随之增多,系统之间的RPC逐渐增多,维护的成本也越来越高,一些通 用的业务和模块重复的也越来越多,这个时候上面提到的接口协议不统一、服务无法监控、服务的负载 均衡等问题更加突出,为了解决上面的这些问题,我们将通用的业务逻辑下沉到服务层,通过接口暴 露,供其他业务场景调用。同时引入了阿里巴巴开源的Dubbo ,一款高性能、轻量级的开源Java RPC框 架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发 现。

优点:

  • 服务以接口为粒度,为开发者屏蔽远程调用底层细节 使用Dubbo 面向接口远程方法调用屏蔽了底层调用细节
  • 业务分层以后架构更加清晰 并且每个业务模块职责单一 扩展性更强
  • 数据隔离,权限回收,数据访问都通过接口让系统更加稳定安全
  • 服务应用本身无状态化,这里的无状态化指的是应用本身不做内存级缓存 而是把数据存入db
  • 服务责任易确定,每个服务可以确定责任人,这样更容易保证服务质量和稳定
    缺点:
  • 粒度控制复杂 如果没有控制好服务的粒度,服务的模块就会越来越多 就会引发、超时、分布式事务等问题
  • 服务接口数量不宜控制,容易引发接口爆炸,所以服务接口建议以业务场景进行单位划分 并对相近的业务做抽象 防止接口爆炸
  • 版本升级兼容困难,尽量不要删除方法、字段、枚举类型的新增字段也可能不兼容
  • 用链路长,服务质量不可监控,调用链路变长,下游抖动可能会影响到上游业务,最终形成连锁反应,服务质量不稳定,同时链路的变成使得服务质量的监控变得困难

微服务架构

微服务架构是一种将单个应用程序 作为一套小型服务开发的方法,每种应用程序都在其自己的进程中独 立运行,并使用轻量级机制(通常是HTTP资源的API)进行通信。这些服务是围绕业务功能构建的,可以 通过全自动部署机制进行独立部署。这些服务的集中化管理非常少,它们可以用不同的编程语言编写, 并使用不同的数据存储技术。
微服务是在SOA上做的升华,粒度更加细致,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35229.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

Nuxt 项目完结总结

1、状态保存,即localstorage。 这里选择了 nuxt-vuex-localstorage(^1.3.0) 来做store的持久化保存。 modules: [nuxtjs/style-resources,nuxtjs/axios,[nuxt-vuex-localstorage,{localStorage: [localStorage]}] ] 2、登录token保存&…...

浅入浅出实现一个异步求和函数

简化:两数之和 我们先来简单的实现一个异步两数之和函数 function sumT(a, b) {return await new Promise((resolve, reject) > {asyncAdd(a, b, (err, res) > {if(!err) {resolve(res)}reject(err)})}) }// 测试 const test await sumT(1, 2) console.log…...

unity学习笔记(一)

unity基础简介(一) unity是如何跨平台的(附c和c#编译过程) 前言 游戏引擎为了兼顾易用性和性能,往往使用一种高效率语言编写核心,使用另一种高级语言作为脚本语言,大部分游戏引擎的底层核心由…...

浮动布局,定位布局,伸缩盒布局

布局 默认文档流 1.元素显示的顺序和代码的顺序是一致的 2.块级元素独占一行空间,默认宽度为父元素的100%,高度由内容或者子元素决定 3.行内元素共享一行空间,默认宽高都由内容决定 浮动布局 float(如果一个元…...

Python大数据分析学习基础篇(3)——数据结构

一、函数部分 1、闭包 所谓闭包其实跟回调函数有有相通之处。闭包可以延长作用时间和作用域。 def say(word):def name(name):print(word,name)return name hi say(你好) hi("小明") bye say("再见") bye("小明 ") 运行结果: …...

SQL 之共同使用ip用户检测问题【自关联问题】-HQL面试题48【拼多多面试题】

目录 0 问题描述 1 数据分析 2 小结 0 问题描述 1 数据分析 (1)数据准备 create table log (uid string,ip string,time string )row format delimited fields terminated by \t;insert into log values (a, 124, 2019-08-07 12:0:0), (a, 124, 2019-08-07 13:0:0), (b, 1…...

线程的安全性 - 并发基础篇

简介 当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就说这个类是线程安全的。 目录 这次分三步走:关于相关知识点,放在文末的脑图里了,大家想看结论的,可直接下拉观看哦。 1.创建一个线…...

栈?队列?Java ArrayDeque常用首尾操作方法整理

对于用Java刷leetcode的同学一定很眼熟ArrayDeque这个数据结构,因为它既可以作为队列也可以作为栈,解题时使用频率很高。补充一嘴,Stack也能作为栈来用,但是作为存在设计缺陷的Vector类的子类,已经不推荐使用了。 Arr…...

开发程序流程

JavaWeb程序--> 将一个请求路径( 网络地址) 变成一条sql语句,发送给数据库进行查询; 会将获取的数据,通过页面的方式,展示给用户进行操作; Javaweb程序如何将一个路径变成一条sql语句?...

从入门到放弃:Markdown中的LaTeX使用教程

LaTeX CSDN不支持显示的语法我已用 标注显示 基本语法 展现形式 在正文中的LaTeX公式用$...$定义行内公式,$$...$$单独居中显示 希腊字母 显示命令显示命令α\alphaβ\betaγ\gammaδ\deltaε\epsilonζ\zetaη\etaθ\thetaι\iotaκ\kappaλ\lambdaμ\muν\…...

----- ElasticSearch -----

1.什么是RestFul 2.什么是全文检索 3.什么是Elastic Search 开源 Apache Lucen 工具包 java api特别多 solr 全文检索服务器 底层封装了lucene ElasticSearch 开源搜索引擎 java 4.ES中基本概念 1)接近实时(NRT Near Real Time 2)索引(index) 3&am…...

39.【Axure 10 】交元件(元件组)交互事件

鼠标相关交互事件 【高】单击时 元件(元件组)的是鼠标单击事件,可以实现鼠标单击的触发的交互事件。 【中】双击事件 元件(元件组)的是鼠标双击事件,作为触发条件。同时也是双击页面任何地方可触发。 【中】鼠标右击事件 元件(元件组)的鼠标右击是…...

PO / PO和 ERP的配置

一、前言 PO / PI 是SAP公司的一个中间件产品,用来辅助SAP系统和外围系统,( 当然外围系统也可以使用PO)。 PO可以完成一些数据内容转换,群发(一份数据发给多个异构系统),分发(数据区分特征发送给特定的系统)等功能. 二、ERP端 ERP和 PO的连接&#x…...

array_search() 在数组中搜索给定的值,如果成功则返回相应的键名

实例 在数组中搜索键值 "red"&#xff0c;并返回它的键名&#xff1a; <?php $aarray("a">"red","b">"green","c">"blue"); echo array_search("red",$a); ?>输出 a 如果…...

不断提升自己创造溢价的能力,附带学习经验

开头 互联网时代的到来&#xff0c;让我们获取知识变得更加简单&#xff0c;理论上讲只要你想学&#xff0c;便会有不尽的知识等你&#xff0c;只要方法得当&#xff0c;够努力&#xff0c;任何人都可以都有可能成为大牛。 自己在努力的基础上&#xff0c;还学习了一些高效的…...

从入门到精通!一个三非渣本的Android校招秋招之路,终局之战

前言: 本文收集整理了各大厂常见面试题N道&#xff0c;你想要的这里都有内容涵盖&#xff1a;Java 相关、Android 基础、Android Framework、三方源码、算法与数据结构、等技术栈&#xff0c;希望大家都能找到适合自己的公司&#xff0c;开开心心的撸代码。 实现方案 直接依…...

潇洒郎:Python建立自己的包与发布自己的包供他人使用

1、建立自己的包&#xff1a; 2、发布包&#xff1a; 3、安装包&#xff1a; 4、 安装包...

燕山大学数据结构知识点总结

数据结构知识点概括 第一章 概 论 数据就是指能够被计算机识别、存储和加工处理的信息的载体。 数据元素是数据的基本单位&#xff0c;可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。 数据结构的定义&#xff1a; 逻辑结构&#xff1a;从逻辑结构上描述数据&a…...

【计算机网络】前端优化总结

文章目录一、采用css雪碧图技术二、把css或者js文件进行合并或者压缩三、图片懒加载技术四、设置视频音频标签为none五、传输格式使用json六、采用cdn加速七、采用事件委托&#xff08;时间代理&#xff09;八、减少闭包使用九、尽量使用异步编程十、使用websocket十一、建立心…...

HTTP的反向代理(详细版)

#官方文档&#xff1a;https://nginx.org/en/docs/http/ngx_http_proxy_module.html #proxy_pass 后直接跟URL url是远处主机或者本机&#xff0c;都可以 proxy_pass http://10.0.0.18:8080;#8080后面无uri,即无 / 符号,需要将location后面 url 附加到proxy_pass指定的url后面…...

搜索: DFS + 剪枝:木棒

题目链接&#xff1a;https://www.acwing.com/problem/content/169/ 题目&#xff1a; 乔治拿来一组等长的木棒&#xff0c;将它们随机地砍断&#xff0c;使得每一节木棍的长度都不超过 50 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态&#xff0c;但忘记了初始时有…...

PMP项目管理 | 项目整合管理

PMP项目管理之项目整合管理项目整合管理定义及概念项目整合管理考虑要素项目整合管理过程包括子过程分解4.1 制定项目章程定义理解作用发生时机参与方输入、工具与技术和输出4.2 制定项目管理计划定义理解作用发生时机参与方项目管理计划和文件输入、工具与技术和输出4.3 指导和…...

2021-08-23 linux的部分基本命令与vi/vim的部分命令

linux的基本命令 文章目录linux的基本命令前言一、APT(Advanced Packing Tool)1.工作原理2.修改源3.几个常用的命令二、vi/vim一. vi/vim 模式1.vi有两种工作模式二. vi/vim 命令1.vim:退出命令2.vim删除与修改命令3.vim拷贝与粘贴命令4.vim 撤销命令5.vim 搜索命令6.vim 替换命…...

关于POST接口返回图片流,前端展示图片

工作当中&#xff0c;有时候会碰到后端由于存储方式等原因&#xff0c;返回给前端的图片的请求方式为POST&#xff0c;这个时候前端如果需要把图片显示在页面上&#xff0c;就要把图片流转换为图片&#xff1a; post返回的图片流&#xff0c;在chrome的network preview时是一个…...

方法与方法重载介绍

1- 方法介绍 定义&#xff1a; 方法是一段具有独立功能的代码块&#xff0c;不调用就不执行。 好处&#xff1a; ①能够提高代码的复用性&#xff08;一个方法可以调用好多次&#xff09;&#xff0c; ②提高代码的可读性&#xff0c;对代码进行分类管理 注意&#xff0c; …...

demo随笔

在我们做项目时&#xff0c;有时候总是会引用到其他的资源&#xff0c;这时候就需要使用iframe来进行引用&#xff0c;那引用之后父页面和子页面要咋进行通信呢&#xff0c;今天遇到一个需求是这样子的&#xff1a;在vue里面嵌入了cesium的地球&#xff0c;地球是第三方做的&am…...

大数据技术hadoop核心Flume

大家好&#xff0c;我是曜耀。 这几天曜耀开始复习一下自己的专业课&#xff0c;相信看过的都了解&#xff0c;就是当前热门的大数据技术与应用。我对于这门专业来说&#xff0c;一个特色就是都会&#xff0c;你说Linux我懂&#xff0c;你说java这是基操&#xff0c;python不好…...

HDU 1536 S-Nim

1536 #include<bits/stdc.h> using namespace std; int s[110],sg[10010]; int k; int SG(int x){if(sg[x]!-1)return sg[x];bool vis[110];memset(vis,0,sizeof(vis));for(int i0;i<k;i){if(x>s[i]){SG(x-s[i]);vis[sg[x-s[i]]]1;}}for(int i0;;i){if(!vis[i]){...

命令提示符

CMD 打开CMD方式 开始&#xff0c;Windows 系统&#xff0c;命令提示符&#xff08;以管理员身份运行&#xff09;WIndowsR&#xff0c;cmd文件夹下&#xff0c;Shift鼠标右键&#xff0c;在此处打开Powershell窗口资源管理器地址栏&#xff0c;cmd 常用DOS命令 切换盘符&a…...

2021年A特种设备相关管理(锅炉压力容器压力管道)免费试题及A特种设备相关管理(锅炉压力容器压力管道)考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通&#xff1a;A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;免费试题是安全生产模拟考试一点通生成的&#xff0c;A特种设备相关管理&#xff08;锅炉压力容器压力管道&#…...

Jetson的mavros使用offboard模式,终端按键控制无人机飞行

基于Promethues根据wiki配置好之后可以实现使用终端控制&#xff0c;起飞&#xff1b;降落&#xff1b;前后左右飞行&#xff1b;上升下降左转右转&#xff1b; 开始我基于仿真测试实机不成功&#xff0c;是因为某个运行节点没有打开&#xff0c;仔细看gazebo.launch文件里仿真…...

ue4和Airsim仿真无人机,键盘控制无人机运动

代码 #键盘测试 import keyboard import airsimclient airsim.MultirotorClient() client.confirmConnection()def abc(x):w keyboard.KeyboardEvent(down, 28, w)s keyboard.KeyboardEvent(down, 28, s)a keyboard.KeyboardEvent(down, 28, a)d keyboard.KeyboardEvent(…...

Unity工具 - 工具聚合页(UEWindow)

随着项目工程的推进&#xff0c;开发者们会根据工作内容的需要在Unity内开发众多的工具。随着工具的增多&#xff0c;Unity 的Menu菜单也会逐渐臃肿&#xff0c;过于分散&#xff0c;工具代码也难以查找。在此问题的基础上&#xff0c;开发了工具聚合页(UEWindow) 这一功能来管…...

无人机相关知识解读

目录 1.什么是云台&#xff1f; 2.云台的工作原理&#xff1f; 3.无人机吊舱是什么&#xff1f; 4.什么是无人机&#xff1f; 5. 无人机都有哪些&#xff1f; 6.什么是多旋翼无人机&#xff1f; 7.什么是直升机无人机&#xff1f; 8.什么是固定翼无人机&#xff1f; 9…...

客户关系管理(增删查改)

完整项目代码: 第一次使用mvc设计模式开发项目&#xff0c;是一个功能简单的项目&#xff0c;业务层service的功能也很少。 需要用到的jar包&#xff1a; 直接上代码 链接&#xff1a;https://pan.baidu.com/s/1cNCUvQBWY_NGiJT4FRX2qw 提取码&#xff1a;kak7 CustomerServ…...

[附源码]计算机毕业设计基于SpringBoot的小说阅读系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…...

七、创业谈话记录

曾在创业公司工作&#xff0c;亲身参与公司的各个方面活动&#xff0c;习惯做笔记&#xff0c;将记录和体会整理成的杂记&#xff0c;没有进行严格分类&#xff1b; 往期文章&#xff1a; 简析创业 创业知识域 一、在创业公司的一些经历思考、讨论、常见问题以及解决 — 创业…...

客户资料用得好,客户跑不了!

在现代企业管理中&#xff0c;客户资料管理过程仍存在诸多问题&#xff1a; 1.早期的客户资料登记不规范&#xff0c;导致信息很杂乱。客户资料的分类不够科学&#xff0c;导致很多该跟进的客户跟进不及时。 2.记录的客户资料过于分散&#xff0c;信息不够全面&#xff0c;想…...

DNS PTR记录

域名是为了方便记忆而专门建立的一套地址转换系统&#xff0c;要访问一台互联网上的服务器&#xff0c;最终还必须通过IP地址来实现&#xff0c;域名解析就是将域名重新转换为IP地址的 过程。这一过程通过域名解析系统DNS来完成。 接下来我们先来了解一下什么是IP反向解析。我…...

CRM助力客户开发

很多销售新人经验不足导致在客户开发上“心有余而力不足”&#xff0c;除了销售前辈传授的销售方法和技巧以外&#xff0c;销售新人要善于借助CRM系统来助力客户的开发。 前言 从事销售行业的工作人员&#xff0c;在开发客户方面都有一套专属自己的销售模板&#xff0c;且随着…...

SSH企业案例_CRM客户管理系统(五):CRM权限拦截器SSH纯注解整合

SSH企业案例_CRM客户管理系统&#xff08;五&#xff09;&#xff1a;CRM权限拦截器&SSH纯注解整合 38/100 发布文章 oZuoShen123 未选择文件 文章目录1、CRM综合练习&#xff1a;客户拜访记录客户拜访记录管理客户拜访记录的准备工作客户拜访记录的列表显示客户拜访记录的…...

AEAI CRM V1.6.0 升级说明,开源客户关系管理系统

1 升级说明 AEAI CRM v1.6.0版是AEAI CRM v1.5.2版客户关系管理系统的升级版本&#xff0c;本次版本是基于AEAI DP v3.8.0_20170228进行打包部署的&#xff0c;升级内容主要是针对数通畅联销售对客户拜访任务管理进行的一次全面的升级&#xff0c;整体的业务流程发生了重大变化…...

与客户联系交流注意事项

1.1、提前与客户预约 如果我们需要实地拜访客户,则需要提前与客户预约(具体需要详细说明到达客户地址的时间,联系客户进行拜访的时间(比如:XXX您好,我是XXX公司的XXX,我明天到达XXX城市,明早9点到您们公司门口,您是否方便)。 1.2、介绍自己 首先需要告诉客户你的信息,…...

04 整合ssm (用户注册,拜访记录显示/添加)

【 用户注册】 完成用户注册功能 用到的技术&#xff1a; MD5加密 是一种非对称&#xff0c;损失精度的加密。 ResponseBody Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文&#xff08;ResponseBody&#xff09;中&#xff0c;一般在异步获取数据时使用…...

layui项目-客户列表-客户搜索客户更新客户新增修改添加拜访记录

客户列表 首先修改main.jsp的跳转路径及PageServlet后台路径的转发,代码如下 <dd><a href"page.do?pagecustomerList" target"con">客户管理</a></dd> protected void customerList(HttpServletRequest req, HttpServletRespon…...

基于JSP网上书城的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…...

python 读取图片颜色值生成excel像素画

像素画&#xff1a; 需要用到的包&#xff1a; 进度条&#xff1a;progressbar pip install progressbar -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.comexcel&#xff1a;操作包openpyxl pip install openpyxl -i http://mirrors.aliyun.c…...

计算机不识别lacie硬盘,如何从LaCie Rugged 外置硬盘上恢复丢失的数据

LaCie外置硬盘是市场上最好的硬盘之一&#xff0c;它具有USB型c端口和USB 3.0,2.0。最好的一点是它的传输速度&#xff0c;它以240MB / S的速度传输数据&#xff0c;这是目前市场上最好的。硬盘驱动器坚固耐用&#xff0c;也可防摔。甚至这个硬盘上的数据也是加密的&#xff0c…...

linux raid1无法恢复,RAID1单硬盘损坏更换硬盘后恢复的方法

其实很简单&#xff0c;在万一真出问题前演练一下没准扣我少点工资(假设有sda和sdb两个盘并组了raid1这里的情况是sdb突然爆炸了&#xff0c;无法使用。可以使用mdadm模拟这种情况&#xff1a;mdadm --manage /dev/md0 --fail /dev/sdb1mdadm --manage /dev/md1 --fail /dev/sd…...

鸿蒙手机版推送时间表,华为鸿蒙2.0手机版推送时间基本定档

华为已经在9月的时候发布了华为鸿蒙2.0系统&#xff0c;而且华为官方表示华为鸿蒙2.0系统将支持智能手机&#xff0c;可以升级更新到EMUI11系统的华为智能手机后续将可以升级更新到华为鸿蒙2.0系统之前已经有23款华为荣耀手机开启EMUI11系统内测公测升级&#xff0c;现在华为EM…...