微服务概念

微服务

微服务是什么

In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

   -- James Lewis and Martin Fowler

引用来自https://www.martinfowler.com/articles/microservices.html

简言之,微服务架构风格是一种将单个应用程序开发为一套小型服务的方法,每个服务都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)通信。这些服务是围绕业务能力构建的,并通过完全自动化的部署机制进行独立部署。这些服务的集中管理是最低限度的,可以用不同的编程语言编写,并使用不同的数据存储技术。

总结:

  1. 一些列的独立的服务共同组成系统
  2. 单独部署,跑在自己的进程里
  3. 每个服务为独立的业务开发
  4. 分布式的管理

在这里插入图片描述

微服务的目的是有效的拆分应用,实现敏捷开发和部署

分布式和微服务的区别

分布式是一种系统设计范式,强调多个独立节点通过网络通信协同工作。

微服务是一种软件架构风格,将应用拆分为小型、独立的服务,强调服务的独立性和快速部署。

分布式系统关注整体系统的设计,而微服务更专注于服务的独立性和灵活性。

微服务是一种实现分布式系统的方式,强调服务之间的松耦合和独立开发、部署的优势。

微服务的优缺点

优点

  1. 松耦合:每个微服务都是相对独立的单元,修改一个服务不会影响其他服务。
  2. 独立部署:每个微服务可以独立开发、测试、部署和扩展,提高了开发和部署的速度。
  3. 灵活性:使用不同的技术栈和编程语言来实现不同的服务,选择最适合特定任务的工具。
  4. 可伸缩性:每个服务都可以独立扩展,允许对系统的不同部分进行水平扩展。
  5. 容错性:如果一个服务发生故障,不会影响整个应用的稳定性。
  6. 技术多样性:团队可以选择最适合他们技能和需求的技术,不受整体架构的限制。

缺点

  1. 复杂性:微服务架构引入了分布式系统的复杂性,需要解决分布式通信、一致性、监控等问题。
  2. 部署和运维:管理大量微服务的部署和运维是挑战,需要适当的自动化和工具支持。
  3. 数据一致性:微服务中的数据可能分布在不同的数据库中,确保数据一致性是一个复杂的问题。
  4. 调试和测试:在微服务架构中,跨服务的调试和测试可能更加复杂,需要适当的工具和流程。
  5. 通信开销:微服务之间的通信可能引入额外的开销,特别是在跨网络较远的情况下。
  6. 服务间集成:确保微服务之间的良好集成和通信是一个关键问题,可能需要使用API网关等工具。

如何拆分微服务

  • 业务能力:将不同业务功能模块拆分成单独的微服务,例如电商系统可以拆分为商品服务,订单服务,用户服务等等微服务。
  • 团队架构:根据康威定律,组织架构决定系统架构,所以微服务在拆分的时候也应该关注团队的组织架构然后进行拆分,尽量减少沟通成本,提升开发效率。
  • 应用类型:例如有些业务处理离线数据业务,这部分可以与在线业务进行拆分,减轻在线业务的压力。
  • 技术栈:若团队使用了不同语言技术栈等,也可以考虑通过技术栈来拆分微服务。

CI/CD

CI/CD 是软件开发领域中的一种持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的实践方式。

  1. 持续集成(Continuous Integration,CI):是指开发者将代码集成到共享仓库中,并通过自动化的构建和测试流程,尽早发现和解决集成问题。
    • 目标:确保开发团队的代码持续地被集成,减少集成问题的发现时间,提高代码的质量。
  2. 持续交付(Continuous Delivery,CD):是在通过持续集成得到的构建通过一系列的自动化测试后,将软件部署到预生产环境,使其随时可供交付。
    • 目标:自动化构建、测试和部署过程,确保软件在任何时候都能够交付。
  3. 持续部署(Continuous Deployment,CD):即自动将通过测试的软件部署到生产环境,实现全自动化的部署流程。
    • 目标:在通过自动化测试的情况下,将软件的变更直接推送到生产环境,减少人工干预,提高交付速度。

蓝绿部署和金丝雀部署

蓝绿部署

在蓝绿部署中,有两个环境:蓝色环境(Blue)和绿色环境(Green)。当前正在运行的版本在一个环境中,而新版本在另一个环境中。

过程:首先,新版本在绿色环境中进行部署和测试。一旦测试通过,流量被切换到绿色环境,原先的蓝色环境变成备份。这样,可以随时切回原先的环境,降低了发布新版本的风险。

在这里插入图片描述

金丝雀部署(灰度发布)

金丝雀部署是逐步将新版本引入生产环境,只将新版本的一小部分流量引导到新的版本上,以测试其在真实环境中的性能和稳定性。

过程:开始时,只有少量用户(金丝雀用户)看到新版本。通过监控性能和错误率等指标,逐渐扩大新版本的流量份额,直至全部流量都切换到新版本。

在这里插入图片描述

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

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

相关文章

【EI会议征稿】第四届环境资源与能源工程国际学术会议(ICEREE 2024)

第四届环境资源与能源工程国际学术会议(ICEREE 2024) 2024 4th International Conference on Environment Resources and Energy Engineering ICEREE(2020-2023)大会先后在珠海,昆明,长沙成功召开。会议主…

【中间件篇-Redis缓存数据库06】Redis主从复制/哨兵 高并发高可用

Redis高并发高可用 复制 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis 副本。复制功能是高可用Re…

操作指南 | 如何将$DOT转移至Moonbeam

Moonbeam直观的DApp界面由波卡原生互操作性支持,用户可以通过几个简单的步骤使用其他平行链的资产或中继链的$DOT。 🧭 首先导向至http://moonbeam.network,点击“Launch App(启动应用程序)”和“Connect Wallet&…

Postman:如何对WebService接口进行测试

前言 由于工作所需,需要使用Postman测试工具,对基于ws规范的WebService接口进行测试。在经过多种尝试后,终于找到了正确的测试方法,下面我便详细记录测试步骤,以便以后再次测试时可以拿来主义。 第一步:确保WebServi…

Excel函数-将A1中的字符串剔除B1中的字符串

比如A2中是类型单位,B2中是单位,在C2中体现A2-B2的结果,即大米 公式:SUBSTITUTE(A2,B2,“”) SUBSTITUTE函数功能:将字符串中的部分字符用新字符替换,替换序号忽略说明进行全部替换 结构:SUB…

zotero跨Windows设备数据同步(利用OneDrive、百度云同步空间等云服务)

zotero跨Windows设备数据同步(利用OneDrive、百度云同步空间等云服务) 特别注意 不能在多个设备同步使用zotero,否则会导致同步出现异常。 基本原理 同步zotero的数据,即同步全部的文献和笔记、高亮标记信息。而这两类数据分别…

C# 使用AForge调用摄像头

C# 使用AForge调用摄像头 安装AForge使用AForge控件示例代码 AForge官网 安装AForge Visual Studio 2022>项目>管理NuGet程序包,搜索AForge并依次安装作者为AForge.NET的多个关联组件。 使用AForge控件 安装AForge组件完成后,工具箱会新增AF…

【PE】PE文件结构(一)

概述:PE文件结构基础认识之DOS头和PE头(以 rpcrt4.dll 为例分析) 0x01 前言 PE(Portable Executable),即可移植的执行体。 Linux平台:ELF(Executable and Linking Format)文件结构。 Windows平…

摩天轮-第15届蓝桥第二次STEMA测评Scratch真题精选

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第156讲。 第15届蓝桥第2次STEMA测评已于2023年10月29日落下帷幕,编程题一共有6题,分别如下&am…

Day10—SQL那些事(特殊场景的查询)

文章目录 1、只想查一个字段却不得不左连接好多张表2、左连接的时候只想取最后一条数据 1、只想查一个字段却不得不左连接好多张表 只想查一个字段却不得不左连接好多张表,而且因为左连接的表太多还导致查出来的数据重复 原先的sql SELECTsph.po_num,chh.visa_ex…

SSM德庆县乡村教育图书管理系统-计算机毕设 附源码 24668

SSM德庆县乡村教育图书管理系统 摘 要 大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在德庆县乡村教育图书管理的要求下&…

centos7通过pip3在线下载python3第三方依赖包

更新pip pip3 install --upgrade pip安装requests ​ pip3 install requests -i https://pypi.doubanio.com/simple ​ 安装路径: /usr/local/lib/python3.6/site-packages 安装paho-mqtt ​ pip3 install paho-mqtt -i https://pypi.doubanio.com/simple ​ 安装…

哈希竞猜游戏开发源码部署方案

随着互联网技术的发展,越来越多的人开始关注网络安全问题,而哈希算法作为一种重要的加密技术,在网络安全领域得到了广泛应用。其中,哈希竞猜游戏作为一种新型的网络安全挑战赛,也受到了越来越多人的关注。本文将介绍哈…

LED显示屏老化知识

LED显示屏老化是指长时间使用后,LED显示屏性能逐渐下降和衰减的过程。虽然LED显示屏具有较长的寿命和良好的稳定性,但长期使用和环境因素会导致一定程度的老化现象。 LED显示屏为什么会老化 1. 亮度衰减:LED显示屏使用时间越长,LE…

高防CDN节点部署:流量攻击抵御的专业解决方案

随着网络攻击日益复杂和频繁,对于网站安全的需求也变得愈发迫切。高防CDN(Content Delivery Network)作为一种专业的网络安全解决方案,通过节点部署在全球范围内,能够有效抵御各种流量攻击,为网站提供可靠的…

2011年12月13日 Go生态洞察:从零到Go,在谷歌首页上的24小时飞跃

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

【EI会议征稿】第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024)

第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024) The 3rd International Academic Conference on Blockchain, Information Technology and Smart Finance 第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024) 将于2024年2月23-25日在马来西亚举行。本次会…

成都瀚网科技有限公司抖音带货的正规

成都瀚网科技有限公司,一家在科技领域有着深厚积累的公司,近年来也开始涉足电子商务领域,特别是在抖音等短视频平台上进行带货活动。在这个充满机遇与挑战的时代,该公司以其独特的商业模式和运营策略,正在赢得消费者的…

Web安全之PHP的伪协议漏洞利用,以及伪协议漏洞防护方法

一、背景 今天介绍一个比较冷门的知识,只有在PHP环境中存在的伪协议漏洞,那么什么是PHP伪协议呢?PHP伪协议事实上就是支持的协议与封装协议。可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议…