做微服务架构主要的点

你的名字 2024-04-17 05:57 137阅读 0赞
  • 几个点

服务注册

服务发现

负载均衡

服务网关:唯一入口,实现用户鉴权,动态路由,灰度发布,A/B测试,负载限流等

配置中心

API管理

集成框架:集成各个微服务组件到统一界面下

分布式事务:TCC,高可用消息服务,最大努力通知

调用链:展示出来方便排查问题

支撑平台:容器云平台

  • CAP原理

一致

可用、可靠、可伸缩

分区容忍

三者只能满足其二,比如要做分布式,数据一致性就很难满足,要看具体需求,找到平衡

最终一致性:一段时间后的一致性

  • BASE原理

基本可用:保证绝大部分用户的一致性,放弃很小的部分(还是看业务需求,互联网上有些业务是可以的)

软状态/柔性事务:有时可以先把数据缓存在客户端,不同步

最终一致性:一定要在容忍的时间内

  • 网关设计

API粒度

API之间不影响

不停机发布API

承载流量:限流,防刷,异步等方法

安全:签名,授权

  • 架构演进

单一应用

垂直应用

分布式服务

SOA

微服务

各有各适用场景

  • 微服务拆分

案例:很多情况下拆了,下层读写数据还是耦合了

根据业务、领域,系统功能,使用资源,数据边界等拆分

避免先设计数据库

  • 几种设计模式

服务代理

服务聚合

服务串联

服务分支

异步消息:通过MQ

共享数据:缓存和数据库

舱壁隔离:分灰度环境,准生产环境,生产环境

  • 容错

线程隔离

降级:本地缓存->分布式缓存->库

流量精细化控制

优雅降级:排队,降级,静默降级

限流

熔断

超时

  • 框架:springcloud

Euraka:服务注册发现

Ribbon:负载均衡

Feign:http客户端

Hystrix:断路器

Zuul:网关

……

  • 数据存储

字段冗余:如订单快照等系统需要

库冗余:主从,主备,集群

同步写

异步写

线下异步写:类主从的模式

  • 分库分表

主要是一致性hash

  • 保证数据一致性

两段提交:规定好超时时间

TCC:try,confirm,cancel

本地消息表:需要定时轮询消息表,如转账场景

MQ非事务消息:依赖于MQ可靠性

MQ事务消息:适用广泛

  • 缓存

CDN

分布式缓存

本地缓存

分布式,主从,主备性能差于本地

redis几乎可替代memcache所有适用场景

案例:

数据量大:分片:hash环集群

峰值明显,异步备份,双写的方式

采用双环的方式保证可靠性,备份环做持久化落盘

  • 缓存的一致性

zk实现分布式锁:但是集群不能太大

乐观锁思路+版本号

  • 缓存命中率问题

粒度小

数据冷热交换的各种策略:根据实际业务来设计

  • 监控范围

组件、存活、方法性能、业务、JVM、服务器性能、报警

WEB展现

  • 持续交付机制:自动化测试、部署,主要是灰度发布

结合容器

发表评论

表情:
评论列表 (有 0 条评论,137人围观)

还没有评论,来说两句吧...

相关阅读

    相关 架构服务架构

    系统架构设计描述了在应用系统的内部,如何根据业务、技术、组织、灵活性、可扩展性以及可维护性等多种因素,将应用系统划分成不同的部分,并使这些部分彼此之间相互分工、相互协作,从而为

    相关 互联网架构为什么要服务

    近期参加一些业界的技术大会,“微服务架构”的话题非常之火,也在一些场合聊过服务化架构实践,最近几期文章期望用通俗易懂的语言聊聊了个人对服务化以及微服务架构的理解,希望能给大伙一

    相关 服务服务架构

    什么是微服务? > 微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是