微服务架构2.0--云原生时代

云原生

云原生(Cloud Native)是一种关注于在云环境中构建、部署和管理应用程序的方法和理念。云原生应用能够最大程度地利用云计算基础设施的优势,如弹性、自动化、可伸缩性和高可用性。这个概念涵盖了许多方面,包括架构、开发、部署、运维和团队文化等

云原生特点和原则

  1. 容器化: 将应用及其依赖打包为容器,以实现一致性的运行环境。容器技术如Docker提供了隔离性、可移植性和快速部署的优势。
  2. 微服务架构: 将应用拆分为小型、独立的服务单元,每个单元专注于特定的业务功能。这提高了可维护性、可扩展性和敏捷性。
  3. 自动化: 强调自动化的开发、测试、部署和运维流程,包括持续集成、持续交付、自动扩展等,以提高效率和稳定性。
  4. 灵活性: 云原生应用通过微服务架构和容器化,使得每个服务单元可以独立开发、部署和扩展,增强了应对变化的能力。
  5. 弹性: 云原生应用能够根据负载自动扩展和缩减,以应对流量的变化。
  6. 服务治理: 强调服务的发现、负载均衡、流量管理以及容错机制,以确保服务的可靠通信。
  7. 声明式API和基础设施即代码: 通过声明式API和基础设施即代码的方式,实现应用的自动化部署和管理。
  8. 可观测性: 强调应用的监控、日志、追踪和指标,以便及时发现和解决问题。
  9. 开放性和多样性: 云原生技术不限于特定的语言、框架或云平台,鼓励采用开放标准和多样的技术栈。

云原生是一个综合性的概念,旨在使应用能够更好地利用云计算的优势,提供更高的可靠性、可扩展性和敏捷性容器化、微服务、自动化和弹性等原则是实现云原生应用的关键。

分布式系统固有问题

在微服务架构中,会面临一些必须解决的问题,比如注册发现、跟踪治理、负载均衡、传输通讯等。只要是分布式系统,就没办法完全避免这些问题,回过头来想一下:这些问题一定要由分布式系统自己来解决吗?

1、SpringCloud与Kubernetes

同一个分布式服务的问题,对比下 Spring Cloud 中提供的应用层面的解决方案,以及 Kubernetes 中提供的基础设施层面的解决方案
在这里插入图片描述
虽然 Spring Cloud 和 Kubernetes 的出发点不同,解决问题的方法和效果也不一样,但不容忽视的是,Kubernetes 的确提供了一条全新的、前途更加广阔的解题思路。

与业务无关的技术问题,便很可能从软件的层面剥离出来,在硬件的基础设施之内就被悄悄解决掉,让软件可以只专注于业务,真正“围绕业务能力构建”团队与产品。

那么原来只能从软件层面解决的分布式架构问题,于是有了另外一种解法:应用代码与基础设施软硬一体,合力应对。

Kubernetes的局限性
基础设施是针对整个容器来做整体管理的,它的粒度就相对粗犷。
有一些问题处于应用系统与基础设施的边缘,Kubernetes很难能完全在基础设施的层面中,去精细化地解决掉它们。

  1. 业务逻辑和基础设施的关系: 某些问题可能与特定的业务逻辑紧密相关,难以通过通用的基础设施解决。在这种情况下,微服务框架(如 Spring
    Cloud)可能更容易为业务提供定制化的解决方案。
  2. 微服务治理和业务规则: 一些问题涉及到业务规则和治理的结合,这可能需要更高层次的抽象和定制化。
  3. 业务复杂性: 对于某些复杂的业务流程,特定的定制化解决方案可能更适合,而通用的基础设施(如 Kubernetes)可能需要更多的适配。

2、服务网格(Service Mesh)与Sidecar Proxy

服务网格(Service Mesh)是一种用于管理和监控微服务架构中服务之间通信的基础设施层。它提供了一系列的工具和功能,以解决微服务架构中的一些共性问题,如服务发现、负载均衡、安全性、故障处理等。

**Sidecar Proxy(**边车代理)是一种在微服务架构中用于处理服务之间通信的模式。它将通信逻辑从应用程序代码中分离出来,作为一个单独的代理进程(sidecar)运行在同一容器、同一主机或同一虚拟机上,与主应用程序共同工作,处理诸如路由、负载均衡、安全性、监控等通信相关的任务。

边车代理主要使用场景

  1. 服务发现和负载均衡: 边车代理可以负责服务发现并在服务之间实施负载均衡,将请求动态分配给不同的服务实例。
  2. 安全性: 边车代理可以提供安全性功能,如认证、授权、加密等,确保只有授权的服务可以通信。
  3. 监控和跟踪: 边车代理可以收集和记录请求和响应数据,以便进行监控和跟踪,帮助分析和解决问题。
  4. 重试和超时: 边车代理可以处理请求的重试和超时,确保请求在一定时间内得到响应。
  5. 熔断和断路器: 边车代理可以实施熔断和断路器机制,当某个服务出现故障时,停止向其发送请求,以避免影响整个系统。
  6. 路由和流量控制: 边车代理可以实现流量的控制和路由策略,用于实现灰度发布、A/B测试等功能。
  7. 请求转换和响应加工: 边车代理可以对请求和响应进行转换和加工,实现协议转换、数据格式转换等。

边车代理优势

  1. 解耦通信逻辑: 服务网格将通信逻辑从应用程序中解耦,使开发人员可以专注于业务逻辑的开发,而不必担心通信细节。
  2. 可观察性: 服务网格通常提供丰富的监控、跟踪和日志功能,帮助开发人员和运维团队更好地了解和管理服务之间的通信。
  3. 流量管理: 服务网格允许对流量进行精细的控制,包括流量分流、A/B 测试、灰度发布等,从而提供更大的灵活性。
  4. 安全性: 服务网格可以提供安全功能,如认证、授权、加密等,确保服务之间的通信是安全的。
  5. 故障恢复: 服务网格可以处理故障检测和恢复,当某个服务实例失败时,可以自动切换到其他健康的实例。
  6. 跨语言支持: 服务网格通常支持多种编程语言和技术栈,适用于多样化的微服务生态系统。

边车代理成本

  1. 复杂性: 引入服务网格会增加系统的复杂性,特别是在小规模项目中可能会显得过度。
  2. 性能开销: 由于服务网格的代理需要处理通信逻辑,可能会引入一定的性能开销,尤其在高吞吐量的场景中。
  3. 学习曲线: 学习和部署服务网格需要时间,开发团队需要熟悉其概念和配置。
  4. 维护: 服务网格的部署和维护可能需要额外的工作,特别是在涉及多个服务的复杂环境中。
  5. 适用性: 并非所有微服务架构都需要服务网格,一些简单的场景可能不需要引入这种复杂的通信层。

常见的边车代理

Envoy: 由CNCF(Cloud Native Computing Foundation)维护的开源代理,具有强大的路由、负载均衡、故障恢复等功能。

Istio: 是一个由Google、IBM和Lyft共同开源的服务网格平台,旨在简化和改进微服务架构中服务之间的通信、管理和监控。Istio 提供了一系列功能和工具,用于解决微服务架构中的一些通用问题,如流量管理、故障恢复、安全性和可观察性等。

服务网格将会成为微服务之间通讯交互的主流模式,它会把“选择什么通讯协议”“如何做认证授权”之类的技术问题隔离于应用软件之外,取代今天的 Spring Cloud 全家桶中的大部分组件的功能。

软件架构演进方向

让开发人员专注于业务逻辑,将与业务无关的技术问题从软件层面剥离出来”,并通过基础设施和工具来处理这些技术问题。这有助于提高开发效率、降低维护成本,并使开发团队能够更专注于核心业务功能的创新。

业务与技术完全分离,远程与本地完全透明,也许这就是分布式架构最好的时代。

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

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

相关文章

【FAQ】H.265视频无插件流媒体播放器EasyPlayer.js播放webrtc断流重连的异常修复

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…

ssm网上医院预约挂号系统源码和论文

ssm网上医院预约挂号系统源码和论文051 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式…

数据结构初阶--排序

目录 一.排序的基本概念 1.1.什么是排序 1.2.排序算法的评价指标 1.3.排序的分类 二.插入排序 2.1.直接插入排序 2.2.希尔排序 三.选择排序 3.1.直接选择排序 3.2.堆排序 重建堆 建堆 排序 四.交换排序 4.1.冒泡排序 4.2.快速排序 快速排序的递归实现 法一&a…

【每日易题】七夕限定——单身狗问题以及进阶问题位运算法的深入探讨

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,在写这篇博客的前一天是七夕,也是中国传统的“情人节”,不知道各位脱单了吗?碰巧最近刷题时遇到了经典的单身狗问题想带大家深入探…

设计模式概述

文章目录 设计模式概述创建型模式:结构型模式:行为型模式: 设计模式概述 设计模式是什么? 设计模式的一般定义为: 设计模式(Design Pattern)是一套反复使用、多人知晓的,经过分类…

java电子病历源码 电子病历编辑器源码 病历在线制作、管理和使用

电子病历在线制作、管理和使用的一体化电子病历解决方案,通过一体化的设计,提供对住院病人的电子病历书写、保存、修改、打印等功能。电子病历系统将临床医护需要的诊疗资料以符合临床思维的方法展示。建立以病人为中心,以临床诊疗信息为主线…

echart 图表添加数据分析功能,(右上控制选择)

echart 图表添加数据分析功能,可区域选择数据,右上按钮,控制echart行为 chart.on(globalcursortaken, onGlobalcursortaken); //绑定事件chart.off("brushSelected");//解绑事件处理函数chart.on(brushSelected, renderBrushed);getBarDev2(eIndex, eTimeArr, eSerie…

mmdetection基于 PyTorch 的目标检测开源工具箱 入门教程

安装环境 MMDetection 支持在 Linux,Windows 和 macOS 上运行。它需要 Python 3.7 以上,CUDA 9.2 以上和 PyTorch 1.8 及其以上。 1、安装依赖 步骤 0. 从官方网站下载并安装 Miniconda。 步骤 1. 创建并激活一个 conda 环境。 conda create --name…

Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据

🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。 🎈在经过调研之后发现,某服务…

SpringCloud学习笔记(四)_ZooKeeper注册中心

基于Spring Cloud实现服务的发布与调用。而在18年7月份,Eureka2.0宣布停更了,将不再进行开发,所以对于公司技术选型来说,可能会换用其他方案做注册中心。本章学习便是使用ZooKeeper作为注册中心。 本章使用的zookeeper版本是 3.6…

vue中form和table标签过长

form标签过长 效果&#xff1a; 代码&#xff1a; <el-form-item v-for"(item,index) in ticketEditTable1" :label"item.fieldNameCn" :propitem.fieldName :key"item.fieldNameCn" overflow"":rules"form[item.fieldName…

【Unity】Text文本组件的一些操作

Unity的Text组件的几种常见的操作方法 Text组件是Unity中用于在UI界面上显示文本的组件。它包含了一些常见的属性和方法&#xff0c;可以用来控制文本的内容、外观和交互。以下是一些常见的Text组件的操作&#xff1a; 设置文本内容&#xff1a;通过直接在Unity编辑器中的Text…

【方案】基于AI边缘计算的智慧工地解决方案

一、方案背景 在工程项目管理中&#xff0c;工程施工现场涉及面广&#xff0c;多种元素交叉&#xff0c;状况较为复杂&#xff0c;如人员出入、机械运行、物料运输等。特别是传统的现场管理模式依赖于管理人员的现场巡查。当发现安全风险时&#xff0c;需要提前报告&#xff0…

C语言基础之——操作符(上)

本篇文章&#xff0c;我们将展开讲解C语言中的各种常用操作符&#xff0c;帮助大家更容易的解决一些运算类问题。 这里提醒一下小伙伴们&#xff0c;本章知识会大量涉及到二进制序列&#xff0c;不清楚二进制序列的小伙伴&#xff0c;可以去阅读我的另一篇文章《数据在内存中的…

行业追踪,2023-08-23

自动复盘 2023-08-23 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

养号自动化,指纹浏览器和RPA机器人解除烦恼

在这个充满科技魔力的时代&#xff0c;社交媒体已经成为人们生活的一部分&#xff0c;而Facebook更是我们分享欢乐、联络亲友的重要平台。然而&#xff0c;随之而来的是一个棘手的问题&#xff1a;如何保持账号的活跃度&#xff0c;而又不被沉重的养号工作压垮&#xff1f;别担…

江西抚州新能源汽车3d扫描零部件逆向抄数测量改装-CASAIM中科广电

汽车改装除了在外观方面越来越受到消费者的青睐&#xff0c;在性能和实用性提升上面的需求也是日趋增多&#xff0c;能快速有效地对客户指定汽车零部件进行一个改装&#xff0c;是每一个汽车改装企业和工程师的追求&#xff0c;也是未来消费者个性化差异化的要求。下面CASAIM中…

【Modbus通信实验三】数据切片问题

在做两个串口相互通信的实验中&#xff0c;当发送频率快一点时偶尔会遇到以下情景&#xff0c;即一次send中把原数据拆成两份发送&#xff0c;就会导致CRC校验错误。下图中6字节数据拆成42是把SetRThreshold()阈值设为2&#xff0c;当设为1的情况下则会拆成51。 一开始以为是缓…

有趣的数学 数学建模入门二 一些理论基础

一、什么是数学建模? 现实世界中混乱的问题可以用数学来解决&#xff0c;从而产生一系列可能的解决方案来帮助指导决策。大多数人对数学建模的概念感到不舒服&#xff0c;因为它是如此开放。如此多的未知信息似乎令人望而却步。哪些因素最相关&#xff1f;但正是现实世界问题的…

【网络】DNS | ICMP | NAT | 代理服务器

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 前面几篇文章虽然讲介绍了整个网络通信的协议栈&#xff0c;我们也知道了完整的网络通信过程&#xff…