SpringCloud-Netflix学习笔记——微服务和微服务架构

news2024/11/19 7:43:09

一、什么是微服务?

  什么是微服务?微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很
难一言以蔽之。究竟什么是微服务呢?我们在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler
于2014年提出的一段话:

  原文:https://martinfowler.com/articles/microservices.html
  汉化:https://www.cnblogs.com/liuning8023/p/4493156.html

  就目前而言,对于微服务,业界并没有一个统一的,标准的定义。但通常而言,微服务架构是一种架构模式,或者说是一种架构风格, 它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储;

  可能有的人觉得官方的话太过生涩,我们从技术维度来理解下:微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。

二、微服务与微服务架构

1、微服务

  强调的是服务的大小,他关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应
用,狭义的看,可以看做是IDEA中的一个个微服务工程,或者Moudel

2、微服务架构

  一种新的架构形式,Martin Fowler,2014提出!

  微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配
合,为用户提供最终价值。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相
协作,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外,应尽量避
免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工
具对其进行构建。

三、微服务优缺点

1、优点

  • 每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求;
  • 开发简单,开发效率提高,一个服务可能就是专一的只干一件事;
  • 微服务能够被小团队单独开发,这个小团队是2~5人的开发人员组成;
  • 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
  • 微服务能使用不同的语言开发。
  • 易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如jenkins,
    Hudson,bamboo
  • 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过
    合作才能体现价值。
  • 微服务允许你利用融合最新技术。
  • 微服务只是业务逻辑的代码,不会和 HTML , CSS 或其他界面混合
  • 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一数据库

2、缺点

  • 开发人员要处理分布式系统的复杂性
  • 多服务运维难度,随着服务的增加,运维的压力也在增大
  • 系统部署依赖
  • 服务间通信成本
  • 数据一致性
  • 系统集成测试
  • 性能监控…

四、微服务技术栈有哪些

微服务条目落地技术
服务开发SpringBoot,Spring,SpringMVC
服务配置与管理Netflix公司的Archaius、阿里的Diamond等
服务注册与发现Eureka、Consul、Zookeeper等
服务调用Rest、RPC、gRPC
服务熔断器Hystrix、Envoy等
负载均衡Ribbon、Nginx等
服务接口调用(客户端调用服务的简化工具)Feign等
消息队列Kafka、RabbitMQ、ActiveMQ等
服务配置中心管理SpringCloudConfig、Chef等
服务路由(API网关)Zuul等
服务监控Zabbix、Nagios、Metrics、Specatator等
全链路追踪Zipkin、Brave、Dapper等
服务部署Docker、OpenStack、Kubernetes等
数据流操作开发包SpringCloud Stream(封装与Redis,Rabbit,Kafka等发送接收消息)
事件消息总线SpringCloud Bus

Spring Cloud Alibaba

在这里插入图片描述

五、为什么选择SpringCloud作为微服务架构

1、选型依据

  • 整体解决方案和框架成熟度
  • 社区热度
  • 可维护性
  • 学习曲线

2、当前各大IT公司用的微服务架构有哪些?

  • 阿里:dubbo+HFS
  • 京东:JSF
  • 新浪:Motan
  • 当当网 DubboX
  • … … …

3、各微服务框架对比

功能点/服务框架Netflix/SpringCloudMotangRPCThriftDubbo/DubboX
功能定位完整的微服务框架RPC框架,但整合了ZK或Consul,实现集群环境的基本服务注册/发现RPC框架RPC框架服务框架
支持Rest是,Ribbon支持多种可插拔的序列化选择
支持RPC是(Hession2)
支持多语言是(Rest形式)?
负载均衡是(服务端zuul+客户端Ribbon),zuul-服务,动态路由,云端负载均衡Eureka(针对中间层服务器)是(客户端)是(客户端)
配置服务Netfix Archaius,SpringCloud Config Server集中配置是(zookeeper提供)
服务调用链监控是(zuul),zuul提供边缘服务,API网关
高可用/容错是(服务端Hystrix+客户端Ribbon)是(客户端)是(客户端)
典型应用案例NetflixSinaGoogleFacebook
社区活跃程度一般一般2017年后重新开始维护,之前中断了5年
学习难度中断
文档丰富程度一般一般一般
其他Spring Cloud Bus为我们的应用程序带来了更多管理端点支持降级Netflix内部在开发集成gRPCIDL定义实践的公司比较多

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

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

相关文章

谷粒商城-高级篇-Day11-商城业务

文章目录整合thymeleaf渲染页面页面修改不重启服务器实时更新渲染二三级数据nginx-搭建域名访问环境一nginx-搭建域名访问环境二整合thymeleaf渲染页面 将index放到product的资源下的static目录&#xff0c;index.html放到templates文件夹下 导入thymeleaf <!-- 模板引擎…

【Acwing寒假2023每日一题】4700. 何以包邮?- 01背包dp至少模板

4700. 何以包邮&#xff1f; - AcWing题库 设满x元包邮&#xff0c;题目要求总价值至少x的最小价值 目录 1、一维 01背包-至少模板 至少模板和至多模板的两大区别 2、二分 二维 01背包-至多模板 &#xff08;1&#xff09;二维dp 3、逆向思维 一维 01背包-至多模板 1…

1.环境搭建 创建spring boot 项目(mac)

1.安装maven 首先你需要在maven官网上下载mac专用的二进制maven压缩包。也就是下图的这个&#xff1a; 然后&#xff0c;开始我们的配置。 1、打开终端&#xff0c;输入这个代码&#xff1a; vim ~/.bash_profile 2、然后点击键盘上的“i”&#xff0c;进入vim编辑模式&…

【BBuf的CUDA笔记】五,解读 PyTorch index_add 操作涉及的优化技术

本文把pytorch index_add算子的代码抽取出来放在&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/blob/master/indexing/index_add_cuda_pytorch_impl.cu 。如果不太熟悉PyTorch的话也可以直接看这个.cu文件&#xff0c;有问题请在这个repo提issue。 0x0.…

2022,我感受到了CSDN不平凡

最初注册CSDN&#xff0c;只是因为老师的要求&#xff0c;负责教C课程的老师让同学们注册CSDN&#xff0c;并经常更新自己的博客。虽然注册了CSDN的博客&#xff0c;也写了几篇博客文章&#xff0c;可最初我并不理解老师为什么要让我们注册&#xff0c;可是随着在CSDN驻留时间的…

运行时数据区

目录 一、概述 1.1、数据区 1.2、JAVA线程数据区 二、线程 2.1、JVM线程概述 2.2、JVM系统线程 三、PC寄存器 3.1、寄存器概述 3.2、作用 3.3、常见问题 一、概述 1.1、数据区 内存是非常重要的系统资源&#xff0c;是硬盘和CPU的中间仓库及桥梁&#xff0c;承载着操…

vulnhub DC系列 DC-5

总结&#xff1a; 下载地址 DC-5.zip (Size: 521 MB)Download: http://www.five86.com/downloads/DC-5.zipDownload (Mirror): https://download.vulnhub.com/dc/DC-5.zip使用方法:解压后&#xff0c;使用vm直接打开ova文件。 漏洞利用 信息收集 这里还是使用DC-1的方法 1.给靶…

AR Foundation

AR Session 在一个AR应用中有且只允许存在一个AR Session 包括两个组件 &#xff1a;AR Session &#xff08;用于管理 Session&#xff09;、AR Input Manager (用于管理输入的一些信息) AR Session&#xff08;用于管理 Session&#xff09; 作用&#xff1a;管理AR应用状…

01.数据的存储

1. 数据类型介绍 1&#xff09;基本的内置类型&#xff1a;char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数 2&#xff09;类型的意义&#xff1a; 使用这个类型开辟内存空间的大小&#xff…

Docker快速入门自用笔记

1. Docker - 介绍 不同Linux的内核一致。 2. Docker - 与虚拟机的不同 3. Docker - Docker架构 镜像&#xff08;只读&#xff09;&#xff1a;应用程序及其所需依赖、函数库、环境、配置等文件打包在一起&#xff0c;称为镜像。 容器&#xff1a;镜像中的应用程序运行后…

一文看懂人机对话

人机对话概述 人机对话是指&#xff0c;让机器理解和运用自然语言实现人机通信的技术&#xff0c;如图1所示&#xff0c;通过人机对话交互&#xff0c;用户可以查询信息&#xff0c;如示例中的第一轮对话&#xff0c;用户查询天气信息&#xff0c;用户也可以和机器机型聊天&am…

Pytorch深度学习【十三】

LeNet网络 基本结构图 构造思路 先用卷积层来学习图片空间信息池化层降低敏感度全连接层来转换到类别空间 代码实现 import torch from torch import nn from d2l import torch as d2l class Reshape(nn.Module):def forward(self ,x):return x.view(-1, 1, 28, 28) # vie…

ElasticSearch7 Kibana集群安装

文章目录ElasticSearch安装下载安装包基础环境安装JDK安装修改Linux配置安装ES启动报错bootstrap check failure [1] of [1]: memory locking requested for elasticsearch process but memory is not lockedKibana安装Kibana简介Kibana下载Kibana安装ElasticSearch安装 下载安…

RS485接口电路设计

RS485接口是串口的一种&#xff0c;常常用在一些工业控制中&#xff0c;485通信是半双工的通信&#xff0c;一条总线最多可连接256个485设备。RS485信号速率最高可以到10Mbps&#xff0c;传输距离最大能到1000多米485接口包含一对差分信号A和B&#xff0c;如下图所示RS485标准规…

springcloud3 Nacos的集群搭建

一 nacos的集群搭建说明 1.1 版本选择的说明 本案例采用的版本是1.4.2 &#xff0c;当选用其他版本均有不同的问题&#xff1a; 1.4.4 nginx代理后&#xff0c;输入密码登录进去。 2.2.0 &#xff0c;2.1.2等 2.x版本均是 3个节点的启动之后&#xff0c;只能访问一个节点。…

David Murray 加入 VeraViews 担任需求总监

近日&#xff0c;VeraViews宣布任命 David Murray 为需求总监。 VeraViews 是一个旨在提供透明和可审计的无效流量 (IVT) 预防的广告技术平台&#xff0c;很高兴地宣布任命David Murray为 VeraViews 需求总监。 大卫是伦敦的一位商业专家&#xff0c;他在英国许多最大、商业上…

三种方式二叉树求从根到叶子结点的所有路径的方法整理

二叉树求从根到叶子结点的所有路径的方法整理 1. 利用递归和回溯方法求解 思路&#xff1a; 利用递归和回溯的方法求解 首先将当前结点加入到path中&#xff0c;然后判断是否为叶子结点&#xff0c;如果为叶子结点&#xff0c;则保存path路径如果不是叶子结点&#xff0c;则…

IDEA 开发工具

文章目录IDEA 开发工具一、IDEA 概述二、IDEA 下载和安装1. IDEA 下载2. IDEA 安装三、IDEA 中的第一个代码1. IDEA 项目结构介绍2. IDEA 中的第一个代码1&#xff09;创建 Project 项目2&#xff09;创建 Module 模块3&#xff09;创建 class 类4&#xff09;在类中编写代码5&…

C++指针

指针的基本概念 作用&#xff1a;通过指针间接访问内存。 内存编号从0开始&#xff0c;一般使用16进制表示。 可以利用指针变量保存地址。 指针变量定义和使用 数据类型*变量名 #include<iostream> using namespace std;int main(){//定义指针int a10;//指针定义语…

绕线机-排线伺服速度解算FC(比例随动编程应用)

绕线机模型和算法详细讲解,专栏已有几篇介绍文章,这篇属于补充和升华。在介绍这篇文章算法之前大家有必要了解什么是"随动系统"。相关链接如下: 绕线机机械结构相关介绍: S7-200 SMART PLC和V20变频器绕线机控制应用_RXXW_Dor的博客-CSDN博客_plc绕线机绕线机P…