分布式
《分布式系统原理与规范》定义:
“分布式系统是若干独立计算机的集合,这个计算机对于用户来说就像单个相关系统”
分布式系统(distributed system)是建立在网络之上的软件系统
分布式与集群的关系
- ORM :单一应用架构
- 当网站流量小时,只需要一个应用,将所有功能部署在一起,可以减少部署节点和成本
- 用于简化增删改查工作量的数据访问框架(ORM)是关键
- MVC:垂直应用架构
- 访问量逐渐增大,单一应用增加集气带来的加速度越来越小时
- 将应用拆分成互不相干的小应用,以提升效率
- 用于加速前端页面开发的web框架 (MVC)是关键
- RPC:分布式服务框架
- 垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立服务器
- 形成稳定的服务中心,使前端应用可能更快速的响应多变的市场需求
- 用于提高业务复用及整合的分布式服务框架(RPC)是关键
- SOA:流动计算架构
- 服务越来越多,小服务字段浪费等问题逐渐显现
- 需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率
- 用于提高机器利用率的资源调度和治理中心(SOA)是关键
dubbo和spring cloud的区别
传输上
tomcat支持的并发量
- Tomcat默认支持150最大请求数
- 当并发量在250以上,可以 考虑应用服务器的集群
- 承载并发的数量,需要看硬件配置。CPU越多性能越高,配置给jvm的内存性能也会越高
- 操作系统对进程中线程的数量的限制
- Windows每个进程不允许超过2000个线程
- linux每个进程不允许超过1000个线程
- java每开启一个线程需要消耗1MV的JVM内存空间用作线程栈之用
高并发衡量指标
- 响应时间RT
- 请求做出响应的时间,既一个HTTP请求返回所用的时间
- 吞吐量
- 系统在单位时间内处理请求的数量
- QPS(Query / Request Per Second)、TPS(Transaction Per Second)
- 每秒查询(请求)数、每秒事务数
- 专业的测试工具:Load Runner、Apache ab、Apache JMeter
并发用户数
主-备方式(Active-Standby方式)
- 一台服务器处于业务激活状态(Actiive状态),另一台服务器处于业务备用状态(Standby状态)
双主机方式(Active-Active方式)
轮询(Round Robin)
- 加权轮询(Weighted Round Robin)
- 随机(Random)
- 哈希(Hash)
- 最小连接数(LC)
-
服务雪崩
熔断
某个服务频繁超时,直接将其短路,快速返回mock(模拟、虚拟)值
限流
限制某个服务每秒的调用本服务的频率
-
API网关
API网关作为系统的后端总入口,承载所有服务的祝贺路由转换等工作
也可以吧安全、限流、缓存、日志 、监控、重试、熔断等放到API网关来做服务跟着
跟踪服务的调用链,记录整个系统执行请求
如:请求响应时间,判断链中的那些服务属于慢服务(可能存在问题,需要改善)弹性云
Elastic Compute Service ( ECS )弹性计算服务
动态扩容,压缩服务器休闲时能力
比如:在618高峰时多配置些服务器,平时减少多余服务器的配置,避免资源浪费物联网(IoT,Internet of things)
万物相连的互联网,是互联网基础上的延伸和扩展的网络,将各种信息传感设备与互联网结合起来形成一个巨大的网络,实现在任何时间、地点、人、机、物的互联互通
断路器仪表盘(Breaker dashboard)
分布式跟踪(Distributed Tracing)
分布式处理程序链跟踪用于监视网络等待时间,并可视化通过微服务的请求流
Spring Cloud
SpringCloud是基于SpringBoot构建的
SpringCloud为开发人员提供了工具,用以快速的在分布式系统中建立一些通用方案
例如:配置管理、服务发现、断路器、智能路由、微代理、控制总线、
一次性令牌、全局锁、领导选举、分布式会话、集群状态
SpringCloud Netflix提供了奈飞公司的开源框架整合(OSS),SpringBoot应用通过自动配置和绑定环境和器spring的模型风格。用简单的注释,快速启动常见模式配置,并构建大型分布式系统