1.微服务

一、微服务是什么

微服务是一种架构风格,即,一个应用应该是一组小型服务,每个服务器只负责一种服务,服务之间可以通过 HTTP 的方式进行互通。每一个功能元素最终都是一个可独立替换和独立升级的软件单元。

可以说,微服务具有以下特征:

  • 根据业务模块划分服务种类。

  • 每个服务可以独立部署并且互相隔离。

  • 通过轻量的 API 调用服务。

  • 服务需要保证良好的高可用性。

二、单体应用

与微服务相对的是单体应用风格,即现在常用的开发风格,一个应用中包含所有服务。

优点

  1. 调试方便

  2. 运维简单

缺点

  1. 软件变更受到了很大的限制,应用系统的一个很小的部分的一处变更,也需要将整个单块应用系统进行重新构建和部署。

  2. 当对系统进行扩展时,不得不扩展整个应用系统,而不能仅扩展该系统中需要更多资源的那些部分。

三、微服务架构要解决的问题

微服务架构要达到三大要求

  • 高可用

  • 高并发

  • 高性能

要达到这三大要求,就需要解决以下这四个问题:

1.客户端如何访问这么多的服务?

使用 API 网关对服务进行聚合,客户端通过访问 API 网关来获取相应的服务

2.服务之间如何通信

服务之间的通信有两种解决方案:

同步通信

  1. HTTP:Apache HTTP Client

  2. RPC:Dubbo、gRPC

异步通信

消息队列:kafka、Rabbit MQ、Rocket MQ

3.多个服务要怎样管理(治理)

注册中心:zk,eureka,consul,etcd,nacos

4.服务提供者宕机要如何应对

  • 重试机制

  • 服务熔断

  • 服务降级

  • 服务限流

四、总结

微服务架构需要的功能或使用场景:

  1. 我们把整个系统根据业务拆分成几个子系统

  2. 每个子系统可以部署多个应用,多个应用之间使用负载均衡。

  3. 需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。

  4. 所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个 URL 请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。

  5. 服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。

  6. 需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。

  7. 还需要一个监控功能,监控每个服务调用花费的时间等,推荐Prometheus。

  8. 还需要统一日志收集,推荐ELK。

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

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

相关文章

全国项目管理标准化技术委员会副秘书长肖杨先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 全国项目管理标准化技术委员会副秘书长、微薄之力(北京)管理咨询有限公司董事长肖杨先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“数字化时代下,由职能型组织向高度适应性组织转…

五款高性能开放式耳机推荐,户外畅听无拘束!

在追求运动乐趣的同时,我们也需要关注自身的安全。开放式蓝牙耳机作为一种新型的耳机类型,正逐渐受到运动爱好者的青睐。它的独特之处在于能够在佩戴时保持对周围环境的警觉性,让你在享受音乐的同时不忘安全。那么,如何选购一款适…

JavaWeb | 5 监听器与FreeMarker

JavaWeb | 5 监听器与FreeMarker 监听器 Listener开发监听器三要素六种常用监听接口内置对象监听接口属性监听接口 项目中监听器的应用场景 FreeMarker模板引擎FreeMarkerJSP与FreeMarkerFreeMarker快速上手FTL取值if分支判断switch分支判断list迭代内建函数 监听器 Listener 对…

推荐学习什么编程语言?

选择编程语言学习时,除了就业因素外,还可以考虑以下几个方面来决定学习哪些编程语言: 个人兴趣与目标:如果你对某个特定领域感兴趣,比如游戏开发、数据分析、人工智能等,可以选择与该领域紧密相关的编程语言…

B站广告推广操作教程及费用?

哔哩哔哩(B站)作为国内极具影响力的年轻人文化社区,已成为众多品牌与企业触达目标受众、提升品牌影响力的重要阵地。然而,面对B站复杂的广告系统与精细化运营需求,许多广告主可能对如何高效开展B站广告推广感到困惑。云…

2023图灵奖得主揭晓!史上首位计算机和数学最高奖“双料王”诞生

重磅消息!北京时间4月10日下午5点整,ACM宣布把2023年图灵奖颁给Avi Wigderson,以表彰Wigderson对计算理论和随机性做出的奠基性贡献。 ACM图灵奖通常被称为“计算机领域的诺贝尔奖”,奖金为100万美元,通常颁发给计算机…

Asterisk 21.2.0编译安装经常遇到的问题和解决办法之json

目录 写在json之前Asterisk requires libjansson 写在json之前 在讨论jansson之前,我们先来看另外一个问题: checking for libedit… no checking for history_init in -ledit… no configure: error: *** Please install the ‘libedit’ development …

【MYSQL锁】透彻地理解MYSQL锁

🔥作者主页:小林同学的学习笔录 🔥mysql专栏:小林同学的专栏 目录 1.锁 1.1 概述 1.2 全局锁 1.2.1 语法 1.2.1.1 加全局锁 1.2.1.2 数据备份 1.2.1.3 释放锁 1.2.1.4 特点 1.2.1.5 演示 1.3 表级锁 1.3.1 介绍 …

03-JAVA设计模式-建造者模式

建造者模式 什么是建造者模式 建造者模式(Builder Pattern)是一种对象构建的设计模式,它允许你通过一步一步地构建一个复杂对象,来隐藏复杂对象的创建细节。 这种模式将一个复杂对象的构建过程与其表示过程分离,使得…

跨站请求伪造漏洞(CSRF)

什么是CSRF CSRF(Cross-Site Request Forgery),也被称为 one-click attack 或者 session riding,即跨站请求伪造攻击。 漏洞原理 跨站请求伪造漏洞的原理主要是利用了网站对用户请求的验证不严谨。攻击者会在恶意网站中构造一个…

spring-cloud微服务openfeign

Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使得Feign的使用更加方便 优势,openfeign可以做到使用HTTP请求远程服务时就像洞用本地方法一样的体验,开发者完全感…

获取请求数据

假设有这样一个请求:http://localhost:8080/springmvc/register?namezhangsan&password123&emailzhangsanqq.com 在SpringMVC中应该如何获取请求提交的数据?在SpringMVC中又应该如何获取请求头信息?在SpringMVC中又应该如何获取客户…

搭建第一个Web服务器(在eclipse或idea上部署Tomcat服务器)

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

深入理解Linux系统中的前后台任务与守护进程

⭐小白苦学IT的博客主页 ⭐初学者必看:Linux操作系统入门 ⭐代码仓库:Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 在Linux系统中,进程管理是至关重要的一个环节。其中,前后台任务和守护进程是进程管理中不可忽视的两…

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例) nodejs构建配置 官方教程 注意:下图的dist是vue项目打包目录名称,根据实际名称配置 # input your command here cnpm cache clean --force cnpm install cnpm run build 主机部署配置 rm -rf /home/vipcardmall/frontend/ mkdir -p /home/…

刷题之Leetcode707题(超级详细)

707.设计链表 力扣题目链接(opens new window)https://leetcode.cn/problems/design-linked-list/ 题意: 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val)&#x…

Day37代码随想录(1刷) 动态规划

509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 n …

外包干了17天,技术倒退明显

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

局域网tcp通信实验

两台windows系统计算机简单TCP通信测试_两台计算机tcp通信-CSDN博客 使用这篇文章的小工具。 环境: 我和同学的两台笔记本电脑。 使用我的手机开热点,两台电脑连接热点。 我的: IPv4 地址 . . . . . . . . . . . . : 192.168.92.79 子…

Day04-SHELL自动化编程-循环与颜色函数库

Day04-SHELL自动化编程-循环与颜色函数库 11. 必知必会核心命令11.1 命令概述11.7 案例11.8 小结 12 Shell编程-循环12.1 循环概述12.2 for循环1)最常用的for循环格式2)c语言格式for循环3)for循环格式及应用场景4)案例 12.3 while…