【微服务】:微服务最佳实践

6f6273fabc966073696b27962010f559.jpeg

关键需求

  • 最大限度地提高团队的自主性:创建一个团队可以完成更多工作而不必与其他团队协调的环境。

  • 优化开发速度:硬件便宜,人不是。使团队能够轻松快捷地构建强大的服务。

  • 关注自动化:人们犯错误。更多的系统操作也意味着更多的事情可能出错。自动化一切。

  • 在不影响一致性的情况下提供灵活性:让团队能够自由地为自己的服务做正确的事情,但是有一套标准化的构建模块可以长期保持健康。

  • 为弹性而构建:由于多种原因,系统可能会失败。分布式系统引入了一整套新的故障场景。确保采取措施尽量减少影响。

  • 简化的维护:而不是一个代码库,你会有很多。有准则和工具来确保一致性。

挑战:一次切换系统

  • 从一个单一的体系结构切换到一个微服务体系结构是不是你可以一次完成的。如果你有一个单一的服务器,那么你可能会在其周围紧紧地建立一个存储库,部署任务,监视和其他许多事情。改变这一切并不容易。

  • 如果一个公司从来没有使用微服务的经验,那么即使是一个绿地项目也会比他们想象的更难。

  • 保留单片服务器,但是任何新的服务都是作为一个微服务来开发的,所以最终的东西都是从原来的服务器中流出来的,直到最终成为我们最老,最大的微服务。

挑战:拆分系统

  • 自项目开始以来,如果将组件和服务粘合在一起,将其隔离起来可能相当具有挑战性。

  • 您需要定义各个部分之间的交互和流程。如果你没有很好的定义,你的系统会产生更多的问题。

  • 没有模式; 将系统划分为微服务有许多不同的规则,但是没有人会告诉你如何在应用程序中使用它。没有两个相同的微服务。

  • 将整体系统分解成微服务的唯一方法是首先检查整体系统,以查看它最“伤害”的位置。系统的这些部分应该被取出并转换成微服务。

  • 如果你没有适当的监控,你将不会看到你的系统是如何工作的。监视所有部分是如何工作的,以及他们在做什么。如果您监控您的系统,您可以轻松检测并解决问题。

  • 渐进地,逐渐式是模块分离单片系统的最好方法。如果你想一次做所有事情,你一定会失败的。

挑战:组织认同

  • 获得组织认同可能是最难的部分。

  • 这不是一个技术决定。您需要清楚说明微服务架构的好处,以说服您的公司重新分配资源。在这样的变革被组织接受之前,这是一个漫长而乏味的过程,组织规模越大,决策的时间就越长。

  • 说服你的组织改用微服务的最佳方式是将系统中的一个非关键部分转换为微服务。通过这种方式,您可以使用真正的,可用的微服务来展示其优势。

挑战:团队

  • 团队本身面临着最大的挑战,因为它需要不同的思考。

  • 开发人员必须花更多的时间来了解什么是端到端场景。他们需要熟悉这些技术,可能需要转换思维方式,这需要时间。

  • 对于在一个可以进行端到端测试的世界中工作的人来说,这是不舒服的,现在你突然把它分解成小块。这更多的是文化上的变化。

  • 从非常小的东西开始,在那里你可以真正受益,并选择一些不是你的应用程序的关键部分。获得一个小团队,并将应用程序的这一部分转换为微服务。证明它实际上是更好的,并逐步向组织扩展。

  • 避免将整个系统一次切换到微服务。

Best Practices:平台:

  • 您的平台是一套与支持工具相结合的标准

  • 微服务架构转换复杂性。而不是一个复杂的系统,你有一堆简单的服务与复杂的交互。我们的目标是保持复杂性可控。

Best Practices:服务要点

  • 独立开发和部署服务

  • 服务应该有他们自己的私人数据

  • 保持服务小到足以保持专注和足够大以增加价值

  • 将数据存储在数据库中,而不是短暂的服务实例

  • 最终的一致性是你的朋友

  • 尽可能将工作卸载到异步工作人员

  • 保持在一个共同的地方完成所有服务的帮助文档

  • 分配负载平衡器的工作

  • 网络边界上的聚合服务可以转化为外部世界

  • 分层安全,不要编写自己的加密代码!

Best Practices:服务交互

  • 通过HTTP传输数据,使用JSON或protobuf的进行序列化

  • 对于HTTP服务,500系列错误或超时意味着服务不健康

  • API应该简单而有效

  • 服务发现机制使服务很容易找到对方

  • 倾向于集权协调员的分散交互

  • 版本所有的API,在相同的服务实例中共存多个版本

  • 在服务超载之前,使用资源限制来快速失败

  • 连接池可以减少突发请求高峰对下游影响

  • Timouts最大限度地减少下游延误和失败的影响

  • 容忍不相关的下游API更改

  • 断路器在艰难时期给下游服务中断

  • 关联ID可帮助您跟踪跨服务日志的请求

  • 确保你能保证最终的一致性

  • 对所有API调用进行身份验证可以更清楚地了解使用模式

  • 使用随机重试间隔自动重试失败的请求

  • 只能通过暴露和记录的API与服务进行交谈

  • 经济力量鼓励有效使用可用资源

  • 客户端库可以处理所有的基础知识,因此您可以专注于重要的事情

Best Practices:开发

  • 为所有服务使用通用的源代码管理平台

  • 要么模仿开发或使用孤立的云开发环境

  • 推动工作代码经常主线

  • Release更少,Release更快

  • 警告:共享库很难更新

  • 您的服务模板应该覆盖基本原理

  • 简单的服务也很容易替换

Best Practices:部署

  • 使用系统映像作为部署包

  • 有办法自动将任何版本的任何服务部署到任何环境

  • 功能标志将代码部署与功能部署分开

  • 配置应该在部署包之外进行管理

Best Practices:运维

  • 在一个地方管理所有日志

  • 为所有服务使用通用监控平台

  • 无状态服务很容易自动扩展

  • 无法在您的平台上运行的相关服务也需要自动化

Best Practices:人

  • 服务团队开发,部署和运营自己的服务

  • 团队在日常运营中应该是自主的

本文 :https://architect.pub/microservices-best-practices
讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】
公众号

【jiagoushipro】
【架构师酒馆】
精彩图文详解架构方法论,架构实践,技术原理,技术趋势。
我们在等你,赶快扫描关注吧。
5d8db00affe3b0b61154058c8577c986.jpeg
微信小号

【ca_cea】
50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.

36c592db8a91f1e2c2865a450d3f56aa.jpeg

QQ群

【285069459】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。
加QQ群,有珍贵的报告和干货资料分享。

c64f20b686c2eca71f8329cec643d8d7.jpeg

视频号【架构师酒馆】
1分钟快速了解架构相关的基本概念,模型,方法,经验。
每天1分钟,架构心中熟。

018b21e779963b756ade81dc0450db4c.jpeg

知识星球【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。

7ef461823391fc4e728159970bb67654.jpeg

喜马拉雅【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。【智能时刻,架构君和你聊黑科技】
知识星球认识更多朋友,职场和技术闲聊。知识星球【职场和技术】
微博【架构师酒馆】智能时刻
哔哩哔哩【架构师酒馆】

528834e278a04e9e0769b2db27e5e51c.jpeg

抖音【cea_cio】架构师酒馆

d9cb6d2223f943b7395644465d12d4d3.jpeg

快手【cea_cio_cto】架构师酒馆

c3ed76c1b3ea32169eb668b623c1772d.jpeg

小红书【cea_csa_cto】架构师酒馆

0cd8b2fad5b16e847ca8c000a4640517.jpeg

网站CIO(首席信息官)https://cio.ceo
网站CIO,CTO和CDOhttps://cioctocdo.com
网站架构师实战分享https://architect.pub   
网站程序员云开发分享https://pgmr.cloud
官网行天智能科技咨询公司https://xingtian.ai
网站开发者闲谈https://blog.developer.chat
网站首席隐私官内参https://cpo.work
网站首席安全官内参https://cso.pub    
网站CIO内参https://cio.cool
网站CDO内参https://cdo.fyi
网站CXO内参https://cxo.pub
网站首席架构师社区https://jiagoushi.pro

谢谢大家关注,转发,点赞和点在看。

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

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

相关文章

Python多任务编程-09队列Queue

程序中的定义:一种特殊的存储数据的方式,可以实现先存入的数据,先出去 1.程序中的队列Queue FIFO(first in first out先进先出) import queueq queue.Queue() q.put("22") q.put(500) q.put({"num&q…

nodejs微信小程序+python+PHP医院挂号系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

C练习题13答案

单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1.结构化程序由三种基本结构组成、三种基本结构组成的算法是(A) A.可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完…

MySQL运维实战(1.2)安装部署:使用二进制安装部署

作者:俊达 引言 上一篇我们使用了RPM进行安装部署,这是一种安装快速、简化部署和管理过程、与操作系统提供的包管理工具紧密集成的部署方法。此外,当你需要更高的灵活性和自定义性,并且愿意承担一些额外的手动配置和管理工作&am…

JavaScript高级 函数进阶篇

函数进阶 1、函数的定义和调用 函数声明方式function关键字(命名函数);函数表达式(匿名函数);new Function()(此处的Function()是一个构造函数);var fn new Function(参…

IntelliJ IDEA 2020将SpringMVC项目打成war包

一 、打开 Project Structure 进行配置 1. 打开方式 (1)CtrlAltShiftS (2)File->Project Structure (3)点击如下图标: 2. 进入 Project Structure,添加Artifacts Web Applica…

YB75XXH系列是采用CMOS工艺制造,低功耗的高压稳压器

YB75xxH 高耐压线性稳压器 ■产品简介: YB75XXH系列是采用CMOS工艺制造,低功耗的高压稳压器,最高输入电压可达25V,输出电压范围为1.5V一12.0V。它具有高精度的输出电压、极低的供电电流、极低的跌落电压等特点。 ■产品特点: …

Python并行计算和分布式任务全面指南

更多Python学习内容:ipengtao.com 大家好,我是彭涛,今天为大家分享 Python并行计算和分布式任务全面指南。全文2900字,阅读大约8分钟 并发编程是现代软件开发中不可或缺的一部分,它允许程序同时执行多个任务&#xff0…

spring基于Xml管理bean---Ioc依赖注入:对象类型属性赋值(1)----外部bean的引入(bean和bean之间的引入)

文章目录 注入普通属性的方式1、set方法注入2、构造器(构造方法)注入 总结:注入对象类型属性 注入普通属性的方式 1、set方法注入 2、构造器(构造方法)注入 总结: set方法注入和构造器方法的注入&#…

基于Netty构建Websocket服务端

除了构建TCP和UDP服务器和客户端,Netty还可以用于构建WebSocket服务器。WebSocket是一种基于TCP协议的双向通信协议,可以在Web浏览器和Web服务器之间建立实时通信通道。下面是一个简单的示例,演示如何使用Netty构建一个WebSocket服务器。 项目…

构建数字化金融生态系统:云原生的创新方法

内容来自演讲:曾祥龙 | DaoCloud | 解决方案架构师 摘要 本文探讨了金融企业在实施云原生体系时面临的挑战,包括复杂性、安全、数据持久化、服务网格使用和高可用容灾架构等。针对网络管理复杂性,文章提出了Spiderpool开源项目,…

csrf自动化检测调研

https://github.com/pillarjs/understanding-csrf/blob/master/README_zh.md CSRF 攻击者在钓鱼站点&#xff0c;可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求&#xff1a; <form action"https://my.site.com/me/something-destructive" metho…

VM进行TCP/IP通信

OK就变成这样 vm充当服务端的话也是差不多的操作 点击连接 这里我把端口号换掉了因为可能被占用报错了&#xff0c;如果有报错可以尝试尝试换个端口号 注&#xff1a; 还有一个点在工作中要是充当服务器&#xff0c;要去网络这边看下他的ip地址 拉到最后面

HarmonyOS - macOS 上搭建 鸿蒙开发环境

文章目录 安装 DevEco第一个 App1、工程基本信息设置2、安装设备3、运行工程 安装 DevEco 软件下载地址&#xff1a; https://developer.harmonyos.com/cn/develop/deveco-studio 今天我下载 DevEco Studio 3.1.1 Release - Mac 版本 解压后是一个 dmg 文件&#xff08;也不必…

Mac电脑上soucetree账户更改

在开发公司项目的时候遇到一个问题。soucetree提示需要输入已离职员工-张三的密码。 问题&#xff1a;Mac电脑使用souetree&#xff0c;拉取仓库代码提示需要输入其他员工密码。 解决&#xff1a; Mac电脑 SourceTree去掉之前的账户 1、前往文件路径 /Library/Application Su…

03-基于GEC6818开发板实现BMP图片的加载——实例分析

03-基于GEC6818开发板实现加载一张图片 实现基于GEC6818开发板实现加载一张BMP文件。其中详细解析了一张BMP格式图的内容。 其他相关GEC6818开发板的内容可以参考 01-基于粤嵌GEC6818实现屏幕的显示固定颜色进行自动切换 02-基于GEC6818开发板的画正方形、画圆的操作——使用mm…

LTO-3 磁带机种草终于是用上了

跑来跑去&#xff0c;买了不少配件&#xff0c;终于是把这磁带机给用上了&#xff0c;已经备份好了300 多 GB 的数据。 我们用了 NAS 的数据压缩功能&#xff0c;把需要备份的文件用 NAS 压缩成一个 Zip 文件&#xff0c;如果你可以 tar 的话也行。 这样传输速度更快&#xf…

【即插即用篇】YOLOv8改进实战 | 引入 Involution(内卷),用于视觉识别的新一代神经网络!涨点神器!

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成…

金蝶Apusic应用服务器 loadTree JNDI注入漏洞复现(QVD-2023-48297)

0x01 产品简介 金蝶Apusic应用服务器是一款企业级应用服务器,支持Java EE技术,适用于各种商业环境。 0x02 漏洞概述 由于金蝶Apusic应用服务器权限验证不当,导致攻击者可以向loadTree接口执行JNDI注入,造成远程代码执行漏洞。利用该漏洞需低版本JDK。(漏洞比较旧,8月份…

Linux ContOS7 日志管理(rsyslog)

目录 01. rsyslog 记录日志程序 02.日志文件 03.日志等级 Linux 日志文件是记录 Linux 系统运行信息的文件。它们类似于人类的日记&#xff0c;记录了系统的各种活动&#xff0c;如用户登录、进程启动、错误消息等。 Linux 日志文件通常存储在 /var/log/ 目录中。该目录包含…