微服务(一) --- 架构与选型

微服务架构的概述

应用架构的发展

应用是可以独立运行的程序代码,提供相对完善的业务功能. 目前的软件架构有三种架构类型:

  • 业务架构
  • 应用架构
  • 技术架构

他们之间的甚是: 业务架构决定应用架构,技术架构支撑着应用架构. 应用架构的发展历程:

  • 单体架构: 最古老的单体应用,没有任何应用拆分,整体就是一个war包
  • 分布式应用 | SOA架构: 根据业务进行划分服务,不同的业务建立不同的服务,不同的服务之间通过服务接口进行数据交互(网络通信).
  • 微服务架构: 将业务功能拆分为多个相互独立的微服务,各个微服务之间松耦合,通过各种远程协议进行同步 / 异步通信,各服务之间可以独立部署,扩 / 缩容以及升 / 降级.

每种技术架构都有其优缺点,存在即合理,不同的业务场景使用不同的应用架构,不一定说最新的架构就是最适合你的.

重点说一下微服务架构,在重新定义SpringCloud实战中介绍了5种微服务架构技术选型,这里说两种,我用过的,常听到的.(先提及一个概念 CAP理论: 一致性,高可用,分区容错性)

参数SpringCloudDubbo
功能微服务完整解决方案服务治理(定位以及发现问题)框架
通信REST / HTTPRPC(远程方法调用)协议
服务注册/ 发现Ecureka(AP)ZK(CP),Nacos
负载均衡Ribbon客户端负载
容错机制六种容错策略六种容错策略
熔断机制Hystrix
配置中心Spring Cloud ConfigNacos
网关zuul,Gateway
服务监控Hystrix + TurbineDubbo + Monitor
链路监控Sleuth + Zipkin
多语言REST支持多语言只支持Java
社区活跃高(背靠Spring)高(背靠阿里)
微服务的解决方案
  1. 基于SpringCloud的微服务解决方案

SpringCloud的技术选型是中立的,可随意搭配更换.

组件方案1方案2方案3
服务发现EurekaConsuletcd,阿里的Nacos
共用组件服务间调用组件Feign,负载均衡组件Ribbon,熔断器Hystrix
网关性能低: zuul; 性能高: Spring Cloud Gateway自研网关中间件
配置中心Spring Cloud Config, 携程阿波罗, 阿里Nacos
全链路监控zipkin(不推荐),Pinpoint(不推荐),Skywalking(推荐)
搭配使用分布式事务,容器化,Spring Cloud与DDD,gRPC
  1. 基于Dubbo实现微服务解决方案

Dubbo不是一个微服务的全面解决方案,而是专注于RPC领域成为微服务生态体系的一个重要的组件,所以说基于Dubbo的微服务组件是: Dubbo + Nacos + 其他. (Nacos的定位是一个更易于帮助构建云原生应用的动态服务发现,配置和服务管理平台)

Spring Cloud和Dubbo

Spring Cloud和Dubbo的比较其实是针对REST和RPC之间的对比,其余方面没有对比性,因为领域不同,对于Spring Cloud提供的一套完整的微服务解决方案,提供分布式情况下的各种解决方案;而Dubbo则是专注于RPC.

Spring Cloud的设计理念是Integrate Everything,即充分利用现有的开源组件,在他们之上设计一套统一规范/接口使他们能够接入Spring Cloud体系并能够无缝切换底层实现.

2018年6月,Spring Cloud中国社区开源名为spring-cloud-dubbo项目,目标是将dubbo融入Spring Cloud体系中,使微服务之间的调用同时具备RESTful和Dubbo调用的能力,做到对业务代码无侵入,无感知,在使用过程中引入jar包则在微服务间调用时使用Dubbo,去掉jar则使用默认的RESTful.

转载于:https://www.cnblogs.com/wadmwz/p/10504794.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux常见致命错误(fatal error),解决办法:

常见错误一&#xff1a;fatal error: zlib.h: No such file or directory 解决办法&#xff1a; sudo apt-get install zlib1g-dev 常见错误二&#xff1a;fatal error: curses.h: No such file or directory #include <curses.h> 解决办法&#xff1a;sudo apt-get i…

brainfu*k语言执行

输入&#xff1a; brainfu*k 代码&#xff1a; [>>>><<<<-]>.>....>.<<.>..------.--------.>.>. 程序&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXL 1000 /*…

Linux连接Windows服务器以及文件传输方法

最近&#xff0c;由于自身需要将操作系统换为Linux&#xff08;Ubuntu&#xff09;系统&#xff0c;但是由于实验室服务器为Windows系统&#xff0c;需要在Linux上连接Windows服务器&#xff0c;方法如下&#xff1a; 首先安装rdesktop 安装方法&#xff1a; sudo apt-get ins…

Filter过滤要登录的页面(重要)

一、为什么要写过滤器&#xff0c;过滤页面&#xff1f; 本人做了一个网站&#xff0c;目前还在开发。做过滤器的目的就是为了要过滤一些页面必需要用户登录之后才能看&#xff0c;主页什么的可以随便看&#xff0c;一旦涉及到要发布或评论什么信息&#xff0c;就必须要过滤用户…

mybatis crud_MyBatis教程– CRUD操作和映射关系–第1部分

mybatis crudCRUD操作 MyBatis是一个SQL Mapper工具&#xff0c;与直接使用JDBC相比&#xff0c;它极大地简化了数据库编程。 步骤1&#xff1a;创建一个Maven项目并配置MyBatis依赖项。 <project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/20…

C语言实现字符串匹配KMP算法

相信很多人&#xff08;包括自己&#xff09;初识KMP算法的时候始终是丈二和尚摸不着头脑&#xff0c;要么完全不知所云&#xff0c;要么看不懂书上的解释&#xff0c;要么自己觉得好像心里了解KMP算法的意思&#xff0c;却说不出个究竟&#xff0c;所谓知其然不知其所以然是也…

Linux问题分析或解决_samba无法连接

1. windows设置方面问题 问题&#xff1a;window能连接部分服务器的samba共享&#xff0c;一部分无法连接。报错如截图。 解决&#xff1a;前提---其他人连接都没有问题&#xff0c;发现有问题的连接服务器的电脑是win10&#xff0c;而win10可以连接到的服务器系统比较新&#…

Drools 7支持DMN(决策模型和表示法)

决策模型和表示法&#xff08;DMN&#xff09;规范是OMG&#xff08;对象管理小组&#xff09;提出的相对较新的标准&#xff0c;旨在为业务规则和业务决策做些什么。 BPMN&#xff08;它的兄弟规范&#xff09;用于业务流程&#xff1a;标准化表示法和执行语义&#xff0c;以…

Ubuntu系统下Python虚拟环境构建详解

在编程开发中&#xff0c;我们经常会利用不同版本的协助软件包&#xff0c;这样就导致一些软件不能兼容&#xff0c;为了解决这个问题呢&#xff0c;我们在儿引进Python虚拟环境&#xff0c;我们安装好虚拟环境之后&#xff0c;进一步激活它&#xff0c;然后在虚拟环境中运行不…

字符串匹配算法

1. 朴素算法 朴素算法是最简单的字符串匹配算法&#xff0c;也是人们接触得最多的字符串匹配算法。 2. Rabin-Karp算法 一个时间复杂度为O(&#xff08;N-M1)*M)的字符串匹配算法&#xff0c;即Rabin-Karp算法。Rabin-Karp算法的预处理时间是O(m)&#xff0c; 匹配时间OO(&…

SolrCloud集群配置

前提&#xff1a; 1&#xff0c;已经做好zookeeper集群或伪集群配置. 2&#xff0c;已将solr部署到tomcat中 接下来&#xff0c;我们将zookeeper与tomcat进行关联 1 vim tomcat/bin/catalina.sh tomcat1的bin目录下catalina.sh文件在第二行加入 1 JAVA_OPTS"-Dbootstrap_c…

Ubuntu18.04 台式电脑插入耳机没有声音解决办法

最近换位ubnutu18.04后发现电脑戴耳机没有声音网上查了一下解决办法如下&#xff1a; 1、打开命令行&#xff0c;输入&#xff1a;sudo apt-get install pavucontrol 2、接着再命令行中输入: pavucontrol 在上面点击向右按钮&#xff0c;然后会出现configuration&#xff0…

第2章 网页基础知识

HTTP 基础术语HTTP 请求过程HTTP Headers 信息网页的组成网页的结构HTML节点树CSS 选择器爬虫的基本原理HTTP CookiesHTTP 代理转载于:https://www.cnblogs.com/pzk7788/p/10512338.html

适用于无服务器Java开发人员的AWS Lambda:它为您带来了什么?

无服务器计算如何帮助您的生产基础架构&#xff1f; 在过去的几年中&#xff0c;无服务器计算架构一直受到关注&#xff0c;因为它专注于应用程序的主要组件之一&#xff1a;服务器。 这种体系结构采用了不同的方法。 在下面的文章中&#xff0c;我们将解释无服务器的含义&am…

Python的sys.stdout、sys.stdin重定向

Python的sys.stdout、sys.stdin重定向 转自&#xff1a;http://www.cnblogs.com/turtle-fly/p/3280519.html 本文环境&#xff1a;Python 2.7 使用 print obj 而非 print(obj) 一些背景 sys.stdout 与 print 当我们在 Python 中打印对象调用 print obj 时候&#xff0c;事实上…

Win10+Ubuntu16.04/Ubuntu18.04双系统安装教程

最近因为开发需要安装Linux系统&#xff0c;因为安装好几次Ubuntu18.04失败&#xff0c;退而安装Ubuntu16.04 安装也失败好几次&#xff0c;在不断尝试下终于解决&#xff0c;后来思考一下觉得Ubuntu 16.04/18.04安装失败原因一致,先进行分享。 先把我遇到的问题给大家看看如下…

获取XML的文件信息

1 /**2 * 获取XML文件的信息3 */4 import java.io.IOException;5 import javax.xml.parsers.DocumentBuilder;6 import javax.xml.parsers.DocumentBuilderFactory;7 import javax.xml.parsers.ParserConfigurationException;8 import org.w3c.dom.Document;9 import org.w3c…

python 中的三元表达式(三目运算符)

python中的三目运算符不像其他语言 其他的一般都是 判定条件?为真时的结果:为假时的结果 如 result5>3?1:0 这个输出1&#xff0c;但没有什么意义&#xff0c;仅仅是一个例子。 而在python中的格式为 为真时的结果 if 判定条件 else 为假时的结果 还是上面的例子 1 if 5…

Linux 命令简单介绍第一课笔记

第一&#xff1a; 相对路径和绝对路径 相对路径:从当前路径开始进入blog文件夹 cd blog绝对路径&#xff1a;从跟目录开始进入blog文件夹 cd /home/yq/Desktop/blog 全称&#xff1a;根目录下home文件下的yq文件下的Desktop文件下的blog文件夹cd ./blog&#xff1a;进入当前…

我是如何转行 AI 并且实现薪资翻倍的

大家好啊&#xff0c;我是董董灿。 熟悉我的小伙伴都知道&#xff0c;我之前在北京某211大学&#xff0c;本硕读了7年的机械专业&#xff0c;后来硕士毕业后&#xff0c;果断转行去做了嵌入式开发&#xff0c;随后瞅准了 AI 爆发的时机果断转行去做了AI。 这段经历已经过去了…