互联网架构演进之路(下)

简介: 互联网架构演进之路(下)

newsql

1、金融电信银行 数据量大 事务要求很高 
2、分布式关系型数据库
3、比如国内tidb
a、tidb是强一致性的 支持事务acid
对一致性要求不高的 不用关系型数据库也可以 比如用redis
b、tidb用的是mysql协议 业务不需要升级
c、单机mysql数据存储的下的话 tidb比mysql慢 因为tidb是分布式的
d、异构存储 一致性很难保证
4、用newsql 线上单表 1200多亿 查询只需要4毫秒

同步架构

image.png

1、为什么用mq做异步
mq顺序写入磁盘 append 追加 效率高
db随机写写磁盘
2、mq要放在网关和业务逻辑层之间变成异步
3、异步目的提升吞吐量
4、推荐使用rocketmq
5、读请求不能用mq 
   写请求可以用mq
数据一致性要求强:充值 不能用异步 吞吐量不高 低并发
数据一致性要求弱:发朋友圈 社交 可以用异步 吞吐量高 高并发
写场景是异步
读场景不是异步
发朋友圈 缓存到本地 读从本地读 不是从网关->业务逻辑层->数据存储层->db
发好了直接看 解决自己看问题就好了 好多秒之后再看 就已经入DB了
但异步也不定写成功到db
微信怎么办的 有未发送成功的消息


层次划分个数

  • 过多
1、请求路径变长
2、平均响应延迟变高
3、定位问题复杂 分布式请求跟踪系统
4、运维成本增加
  • 过少
单体
  • 适中

image.png


缺点

每层粒度过粗

扩展

1、reacter 模型 本质是异步架构 是一个实现手段
2、app和网关长连接 失败了会推给app
若http必须长轮询
3、使用nginx\f5\lvs意义会使请求更加健壮 因为网关会频繁重启 
4、nginx反向代理 ip限流
5、mq不适合用udp协议(高性能udp) mq要保证数据可靠性


同步水平分层架构

dns解析 ->静态资源获取->动态资源获取

image.png



1、路由器虚拟化 NetGW
2、对象存储 
   a、fastdfs(规模小) 
   b、ceph(规模大 运维压力大 快存储、挂硬盘)


面向服务SOA


垂直拆分

image.png


1、多个独立服务(每个服务都是单体)
2、通过ESB交互 对ESB依赖严重
3、SOA不是微服务架构


微服务架构


垂直和水平都拆分

1、独立进程
2、围绕业务建模能力
3、独立部署
4、去中心化管理 (网关、业务逻辑
数据访问、存储层 都可以用各种语言写 但会带来很多问题)

image.png

1、用zk、consul做注册中心不行 eurka 可以
2、配置中心推荐 appllo 携程开源;不要用disconf(springcloud的生态)
3、交易系统是同步分层架构
4、注册中心不知道哪个服务挂掉 通过熔断可以知道
5、forupdate并发锁 粒度大 量大不行
6、同层之间不调用


本质

两个拆分

垂直(业务)拆分比较难
继续拆分 读、写微服务(按功能拆分 (api))

业务架构

微服务架构是业务架构 不是系统架构

组织架构

事业部制  公司->房产(产品、研发、销售) 招聘(产品、研发、销售) 二手车(产品、研发、销售) 效率高
公司->产品、研发、销售 效率低


应用场景

需求层面

变化频繁 比如内部OA系统 ERP系统 不频繁 微服务意义不大

性能层面

1、吞吐量变高 平均响应延迟变高
2、高频交易 量化交易 不合适微服务

数据一致性层面

一致性分为:
   强一致性
   和最终一致性(用微服务其实解决这个问题)
多个db 分布式事务解决强一致性问题 性能就没了
往往最终一致性 (分为同步、异步场景)

目的

快速迭代、持续交付
降本(人力、机器)提效(开发、运维、测试)


后记


后续会介绍服务网格架构ServiceMesh



相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
XML 数据库 数据格式
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
41 0
互联网大厂一致好评!神作《凤凰架构》仅开源3小时,竟遭受哄抢
给大家分享一本好书:周志明老师的 《凤凰架构:构建可靠的大型分布式系统》,现在网上还没有开源版本!阿嘴会在文末附电子版免费下载方式。
|
21天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
43 0
|
3月前
|
存储 缓存 监控
【分布式】大型互联网项目架构目标
【1月更文挑战第25天】【分布式】大型互联网项目架构目标
|
3月前
|
达摩院 Java Apache
惊动“达摩院”的分布式架构笔记:火于互联网,据说来自于清华
一个星期前,一本Java架构笔记突然在互联网上爆火。因为内容的深度和广度,甚至连阿里最牛的研发中心都被惊动了,而且作者一周后直接被阿里挖走后定级P8,据说作者来自于清华。
|
8月前
|
架构师 Java 程序员
3分钟通晓,互联网架构20年以来的演进
作为一个Java程序员,你可能也思考过,为什么我还是普通开发,为什么我还是高级开发,普通开发和高级开发有什么区别?你是不是也想过要成为架构师?想要成为合格的架构师,就必须要了解架构的演进,今天,我们就来聊一聊,Java架构的演变历史。
95 0
|
4月前
|
XML 监控 数据库
互联网架构演进:从传统单体到Service Mesh
互联网架构演进:从传统单体到Service Mesh
68 0
|
5月前
|
设计模式 SQL 安全
淘东电商项目(72) -互联网安全架构设计(责任链模式重构网关流程)
淘东电商项目(72) -互联网安全架构设计(责任链模式重构网关流程)
26 0
|
5月前
|
SQL 安全 API
淘东电商项目(71) -互联网安全架构设计(网关验证AccessToken)
淘东电商项目(71) -互联网安全架构设计(网关验证AccessToken)
25 0
|
5月前
|
SQL 安全 API
淘东电商项目(70) -互联网安全架构设计(搭建开放平台-OAuth)
淘东电商项目(70) -互联网安全架构设计(搭建开放平台-OAuth)
42 0