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

简介: 互联网架构演进之路(中)
  • 数据完整性检查
app 通过https/http协议 以json字符串的格式
请求包:
1 定长header(uid、sessionId(请求唯一标识、cmd(请求命令号)、body length)) 
2 变长body
原则:
不会对价格字段做检查(不会处理具体业务语意)
但要做非空检查(通用逻辑)
  • 请求鉴权
  • 粗粒度:ip白名单
  • 细粒度:请求参数中有token,基于过滤器做token验证
1、登陆鉴权是属于具体业务 不属于请求鉴权 放在业务逻辑层
2、鉴权规则配置到配置中心 可视化方式获取
  • 协议转换


请求进入网关之后 不用短连接

传输协议

rpc oven tcp
可以提升传输效率

数据协议

protobuf google
(用json传输量大 pb二进制且压缩)

image.png


网关不需要理解具体的业务语意
1、json{k1,v1}转hashmap(string,object)
2、hashmap序列化pb

路由转发

负载均衡

网关开源组件

image.png


简单解释:
1、Kong基于nginx(Lua) 写了扩展性脚本
2、BIO是阻塞IO模型
3、Netty 用的NIO(N是New IO:IO复用)
4、epoll (linux具体网络实现,实现NIO)
5、AIO 异步IO模型 (用的不多 业务复杂度很高 性能最好)
6、Zuul 已贡献给 Spring Cloud 推荐Zuul
简单扩展:
1、国际化 在APP启动层做
2、第三方调用的场景用oauth授权  app用oauth意义不大
3、多版本号场景 业务逻辑根据不同版本号做差异
4、不同业务团队用一个网关 
5、网关层是无状态的 每一个部署的模块是对等的 不存储数据
6、selct和poll不用 性能较差 epoll用的更多
7、springcloud大公司用的很少
   中小型公司用的多 
   用的是http协议 没有用rpc
8、服务治理每层都要做
9、Zuul尽量少启动 一启动连接就丢了 
10、app(混合式: 经常变的页面做成h5(不需要发版本) native)

业务逻辑层功能

image.png


数据访问层功能

image.png


orm映射 : pb->mysql协议

最难的是Sharding

1 原因:
很多情况 sharding不了
对商品留言功能 几十个亿 分片不了
留言id 留言商品id 留言人 留言时间 留言状态(有没有删除)
未分表 只需要建立index就可以
分表 parditing key只有一个
其他的查询字段要遍历所有表 
2 解决方式:
通过映射表 基因法
3、分库分表查询的业务逻辑在业务逻辑层实现


最好的方式是不分片

将分表逻辑下推到db层

数据库进化史

  • rdbms
1、单机关系型数据库 
2、08年之前
3、比如mysql oracle
  • nosql
1、数据量大 互联网事务要求不高 (acid) 分布式非关系型数据库 
2、解决了分库分表
3、一致性解决不好 比如mongodb redis hive hbase
4、mongodb 3.0之前事务性不好 4.0及以后支持事务
相关文章
|
XML 数据库 数据格式
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
80 0
|
4月前
|
数据库 Java 数据库连接
Hibernate 实体监听器竟如魔法精灵,在 CRUD 操作中掀起自动化风暴!
【8月更文挑战第31天】在软件开发中,效率与自动化至关重要。Hibernate 通过其强大的持久化框架提供了实体监听器这一利器,自动处理 CRUD 操作中的重复任务,如生成唯一标识符、记录更新时间和执行清理操作,从而大幅提升开发效率并减少错误。下面通过示例代码展示了如何定义监听器类,并在实体类中使用 `@EntityListeners` 注解来指定监听器,实现自动化任务。这不仅简化了开发流程,还能根据具体需求灵活应用,满足各种业务场景。
42 0
|
4月前
|
NoSQL API 数据库
揭秘!Flask如何一键解锁RESTful API高效微服务?打造未来互联网架构的隐形力量!
【8月更文挑战第31天】本文介绍如何使用 Flask 构建高效且易维护的 RESTful 微服务,涵盖环境搭建、基本应用创建及代码详解。通过示例展示用户管理系统的 CRUD 操作,并讨论数据库集成、错误处理、认证授权、性能优化及文档生成等高级主题,助力开发者打造强大的后端支持。
77 0
|
4月前
|
边缘计算 安全 物联网
未来互联网架构的演变
【8月更文挑战第16天】随着科技的不断进步,互联网作为现代社会不可或缺的基础设施,其架构也在不断地发展与演变。本文将探讨未来互联网架构可能的变化方向,包括边缘计算、软件定义网络(SDN)、网络功能虚拟化(NFV)等技术趋势,以及这些技术如何影响互联网的稳定性、安全性和效率。同时,文章还将讨论这些变革对用户隐私保护和数据治理的潜在影响,并展望互联网架构的未来发展趋势。
|
4月前
|
设计模式 安全 网络安全
|
6月前
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
|
7月前
|
架构师 开发工具 C++
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
|
6月前
|
存储 缓存 网络协议
互联网架构与通信机制:从边缘到核心的深度解析
互联网架构与通信机制:从边缘到核心的深度解析
185 0
|
7月前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
200 0
|
7月前
|
存储 缓存 监控
【分布式】大型互联网项目架构目标
【1月更文挑战第25天】【分布式】大型互联网项目架构目标

热门文章

最新文章