首页 > 其他分享 >微服务开发,这10个点你要知道

微服务开发,这10个点你要知道

时间:2023-12-28 10:24:58浏览次数:35  
标签:10 服务 个点 分布式系统 Graylog 开发 使用 架构 日志

微服务架构是一种软件开发模式,它将一个复杂的应用程序拆分为多个个独立的、小型的、可复用的服务,每个服务负责一个特定的业务功能。

微服务架构有许多优点,例如提高系统的可扩展性、可维护性、可测试性和故障容忍性。

但是,微服务架构也有很多问题需要注意,例如如何设计合理的划分服务接口、如何在服务间实现高效通信、如何保证数据一致性等。因此要想成功地使用微服务架构,我们需要遵循一些最佳实践。

以下是一些微服务架构的最佳实践,我将尽我所了解的知识给大家进行讲解。本文大纲如下,

image

1. 不使用微服务架构

没错,我们应该尽量避免使用微服务架构。

认真地说,使用微服务架构只能被视为最后的选择。从项目实际应用场景开发,少看一些网上关于微服务的吹捧。务实一点,根据项目体量、业务复杂度选择一个适合当前项目的架构。

首先尝试构建一个单体的模块化架构,而不是一上来就搞微服务架构。

2. 针对失败场景进行处理

在任何使用微服务的分布式系统里面,总是有调用失败的可能,比如网络分区、某个服务宕机不可用等。

所以我们在系统调用层面针对失败场景的处理,应该设计得越早越好。

故障设计最好三个级别,

  • 基础设施级别
  • 数据库级别和
  • 单个微服务级别

实际的针对失败场景处理,可以使用断路器、服务降级和 "隔板模式"。

隔板模式在分布式系统中就是指资源隔离,在分布式系统里,资源隔离通常按业务分为进程级别的隔离和线程级别的隔离,某些简单的服务质量要求不高的业务场景下实现进程级别的隔离就够了,但是在某些对服务质量要求较高的分布式场景下需要线程级别的细粒度隔离。

3. 构建小型服务

微服务架构中,每个服务应该都按单一职责进行设计。

每个微服务应该只负责一个业务领域,并且尽量避免涉及其他领域。

这样可以提高代码的可读性、可测试性和可维护性,也可以降低系统的复杂度和耦合度。

4. 使用轻量级通信协议

微服务架构中,服务之间的通信协议时非常重要的。因为在一些对性能要求较高的场景里,选择一个轻量级协议所能带来的 QPS 提升,也是非常客观的。

比如服务间可以使用 REST、GRPC 或消息队列等通信协议,这样可以尽可能减少服务通信带来的开销并提升性能。

5. 服务发现

微服务架构下,服务实例的网络地址是动态分配和变化的,因此需要一种机制,能够及时获取服务实例的最新的网络地址,以便进行服务间通信。

并且服务实例的数量和状态都是随着业务需求和故障情况而变化的,还需要有能够及时感知服务实例的上线、下线、故障等情况的能力。

因此我们需要使用服务发现组件,它负责自动发现服务实例,负载均衡和故障转移。

服务发现组件有 Eureka 、Consul、Nacos 等,国内的话,推荐大家使用 Nacos。

6. 数据库隔离

微服务架构下,每个服务的数据库应该都是单独部署的,它们之间相互隔离。

一个服务要操作另一个服务数据库中的数据时,都应该只能通过调用另一个服务的接口来实现,而不是粗暴的直接访问其他服务的数据库进行读写。

数据库隔离的最终目标就是为了减少服务之间的耦合,使它们能够独立发展。

7. 实施弹性模式

为了提高微服务架构中各个服务的弹性,我们应该尽量使用弹性模式。

所谓弹性,其实就是服务的可用性,专业一点的话说就是从某些类型的故障中恢复并保持自身服务的能力。

那么,我们应该如何实施实施弹性模式嘞?

其实很简单,我给大家分成两个部分进行讲解,一个是服务内,另一个是服务外。

服务内指的是别人调用我们的服务时,需要注意的点有,

  • 添加缓存
  • 资源隔离
  • 接口限速

服务外指的是我们调用别人的服务时,需要注意的点有,

  • 调用超时
  • 请求重试
  • 断路器应用

8. 服务监控于链路追踪

有句话说得好,"在任何分布式系统中,会宕机的服务最终都会宕机"。

标签:10,服务,个点,分布式系统,Graylog,开发,使用,架构,日志
From: https://www.cnblogs.com/mq0036/p/17932122.html

相关文章

  • 03 CP2104串口驱动安装
    1概述串口是最常用的一种调试工具,开发过程中我们经常会使用串口输出一些调试信息,在LINUX下也会用串口控制台控制LINUX系统。目前的串口,大部分都是USB转串口。CP2104是一款非常稳定好用的USB转串口芯片。接下来我们看下如何进行驱动安装。2软件下载登录米联客技术论坛https://......
  • CF1910G Pool Records记录
    题目链接:https://codeforces.com/contest/1910/problem/G题意简述有两个运动员以未知的固定速度\(v_1\nev_2\)在一个长为\(50\)米的游泳池中游泳,一旦到边缘就立即掉头。现在有他们前\(n\)次相遇时间\(t_i\)(递增,均为整数)的记录,问这个记录是否合法。\(n\le2\times10^......
  • 云原生场景下月省 10 万元资源成本,这家企业做对了什么
    作者:行疾相信近期从事基础设施工作的各位,对IT成本治理,以及FinOps体系的概念已经有了一些认知。在Google近5年的热度趋势中,FinOps的趋势也在持续上升。在阿里云的同学与客户实际工作协同中,我们发现成本治理是几乎每位客户都存在的普适需求,特别是各位技术管理者重要的关......
  • 云原生场景下月省 10 万元资源成本,这家企业做对了什么
    作者:行疾相信近期从事基础设施工作的各位,对IT成本治理,以及FinOps体系的概念已经有了一些认知。在Google近5年的热度趋势中,FinOps的趋势也在持续上升。在阿里云的同学与客户实际工作协同中,我们发现成本治理是几乎每位客户都存在的普适需求,特别是各位技术管理者重要的关注点......
  • 10.系统资源分析
    CPU与GPU的关系:GPU渲染工具:Android开发者工具提供性能调优工具GPU渲染分析:GPU-RENDERING-PROFILEGPR显示内容:绘制每一帧所消耗的时间不同的颜色代表UI绘制的不同阶段并且在柱状图的中间还有一根绿色的横线代表16ms的绘制时间基准GRP会统计并显示app最近运行的128帧蓝......
  • 初中英语优秀范文100篇-040My View on the Internet-网络之我见
    初中英语优秀范文100篇-040MyViewontheInternet-网络之我见PDF格式公众号回复关键字:SHCZFW040记忆树1NowmanyofmyclassmatesliketosurftheInternetintheirfreetime.翻译现在很多同学喜欢在空闲时间上网简化记忆上网句子结构1manyofmyclassmate......
  • 代码随想录算法训练营第十五天 | 层序遍历 ,226.翻转二叉树,101.对称二叉树
    一、二叉树层序遍历题目链接:LeetCode102.二叉树的层序遍历LeetCode107.二叉树的层序遍历IILeetCode199.二叉树的右视图LeetCode637.二叉树的层平均值LeetCode429.N叉树的层序遍历LeetCode515.在每个树行中找最大值LeetCode116.填充每个节点的下一个右侧节......
  • win11,win10使用小米随身wifi
    普通下载官方软件安装包安装后一定会出现无法创建wifi的情况,甚至连有线网络都上不了了;这是因为官方没有维护小米随身wifi对新系统的适配了,我也是踩了不少坑才在win11上让小米随身wifi重换生机的。下面由我来一步步告诉你怎么弄。1.下载的软件包用解压软件打开(我用的是7-zip,你也可......
  • Facade 外观模式简介与 C# 示例【结构型5】【设计模式来了_10】
    Facade外观模式简介与C#示例【结构型5】【设计模式来了_10】 阅读目录〇、简介1、什么是外观模式?2、外观模式的优缺点和适用场景一、外观模式的代码实现二、结构三、相关模式回到顶部〇、简介1、什么是外观模式?一句话解释:  将一系列需要一起进行的......
  • 18 aurora 8b10b回环测试
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述8B/10B编码是1983年由IBM公司的AlWidmer和PeterFranaszek所提出的数据传输编码标准,目前已经被广泛应......