微服务架构

微服务架构

什么是微服务架构风格?

微服务架构风格是将单个应用程序实现为一组小服务的软件设计开发方法,每个小服务都运行在自己的进程中,并以轻量化的机制进行通信(基于HTTP或RPC)。这些小服务围绕业务功能构建,可以通过全自动化部署机制进行独立部署。这些小服务应用最少的集中化管理(去中心化),他们可以用不同的编程语言编写,也可以使用不同的数据存储技术

关键特征:

  • 服务解耦(区别于单体架构风格的逻辑解耦)
  • 每个服务打成独立的包,独立发布部署
  • 跨进程、跨网络
  • 动态注册、动态发现
  • 数据库独立

微服务架构设计:分布式框架+高可用设计

更多:

  • 服务注册、发现
  • 动态发现:负载均衡、请求路由
  • 序列化、反序列化(通信、网络传输)
  • 高可用:熔断、限流、重试、降级
  • 运维/可观测性:故障注入、日志、监控、metrics
  • 安全:身份认证、加密解密、访问控制

组织、流程、工具链、自动化基础设施…

为什么要微服务架构风格?

互联网应用的需求:大容量、高并发、弹性伸缩、快。

并不是所有的服务都适合微服务架构,微服务架构需要一定的门槛:

  1. Rapid Provisioning
    • 快速申请资源,资源池、云
  2. Basic Monitoring / 高可用
    • 日志服务、监控告警、服务调用链
    • 熔断、限流、降级
  3. Rapid application deployment
    • Deploy Pipeline、自动化
  4. Organizational shift(组织转变)
    • DevOps Culture
微服务架构的关键特征
  1. 通过服务进行组件化(物理解耦)
  2. 围绕业务能力进行组织(康威定律)
  3. Products not Projects(驱动力&价值)
  4. 只能端点和哑管道(非总线式)
  5. 去中心化治理
  6. 去中心化数据管理(数据解耦)
  7. 基础设施自动化(依赖自动化)
  8. Design for failure(面向失败设计)
  9. 演进式设计(可独立替换)
微服务架构的优缺点

优势:

  1. 简单 - 门槛低、易于维护、已与开发
  2. 可独立部署 - 并行开发、独立发布部署、快速上线
  3. 可独立技术选择
  4. 创新
  5. 规模增长

缺点:

  1. 分布式系统 - 系统复杂度增加、故障概率增加、故障定位困难,影响可用性;额外的性能损失;事务一致性问题
  2. 服务多 - 部署、升级复杂度增加,工作量增加

启示:

  • 如何选择:大容量、高并发、动态资源申请;业务变化快、小团队、敏捷;系统已具有一定规模,演进阶段时的选择…
  • 主要是企业应用类软件领域,电商应用、内容订阅应用等
  • 考量:组织架构、软件形态、软件发布方式、所处阶段、基础能力
  • 如果你不能正确地构建大型单体应用,那么微服务也帮不了你
微服务架构的主要技术服务和组件
  • 服务注册发现:Eureka,Dubbo,Consul,ZooKeeper,Etcd,Nacos
  • 路由&负载均衡:Ribbon,Dubbo,HSF,DSF
  • 分布式服务框架:REST,gRPC,HSF,Dubbo,Hessian,DSF
  • 序列化/反序列化:Protobuf,Hessian2,JSON,kryo,FST,Avro,BSON
  • 服务网关:Zuul,SpringCloudGateway,CSB,APIFabric
  • 服务配置:Archaius,SpringCloudConfig,Consulconfig,Apollo,ACM
  • 服务熔断:Hystrix,resilience4j,Sentine,DSF
  • 链路追踪:SpringCloudSleuth,Zipkin,Htrace,Turbine,ARMs,SkyWalking,DV
  • 日志服务:logback,ElasticSearch,DV
  • 监控平台:Promethues,Kibana,grafana,Springbootadmin,DV
  • 分布式事务服务:GTS,Seata,FMT
  • 应用容器:Karyon,ali-tomcat,OpenAS
DDD领域驱动设计
云原生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值