再谈分布式服务及框架。
分布式服务最初是从RPC演变过来的,客户端调用远程方法(应用),本质上是远程调用的可用性问题。
假设服务还是以前的那种单体应用结构,它的业务承载能力毕竟有限,它支持多少并发?不考虑业务复杂如何,单体能支持5,6万的并发已经很高了,这个并发量在现在也很高,这在以前还没有那么高并发量的业务场景,对于单体来说,很多都可能就支持几百上千的并发,3,4千也很高了。
那如果超过了单体所能支撑的并发怎么办?
对于前端(包括api)来说,可以很容易的多加一台机器就可以解决问题, 无非就在ng上在加一个server,就可以做到通过多台机器来支持更多的用户访问。
但对于后台应用怎么办?多加一台机器后,又怎么负载路由? 怎么将用户请求转发到后台应用?
所以到这里就需要有个路由表。
这个路由表的配置在哪? 是不是应该有个路由配置的地方?
有了这个路由表之后呢? 要怎么配置?
这个配置是要手工配置还是?像ng那样手工添加配置?这个后话。
这个路由表需要配置些什么?
我们要调用远程的一个方法,至少需要知道host,port信息以及哪个对象,包括调用的是哪个方法。
这些必要的信息都需要配置到这个路由表中么?
我们将用户请求转发给后台应用,只需要将请求转发到后台的一台节点(机器),所以只需要有host,port就基本可以了。
通常我们要调用远程的一个方法, 我们在客户端会有个代理负责将用户请求转发给服务,代理和服务具有相同的行为,有相同的方法。参考各个RPC实现,如hessian,thrift,grpc,Java RMI等。
有了这个路由表后,又怎么进行路由呢?这个路由转发是均衡的么?
如果后台机器配置不一样, 处理任务等也不一样,均衡的转发请求又不合适了吧?假设两个机器,一台配置高,一台配置低,配置高的机器就可以处理更多的用户请求,应该将更多的用户请求转发给这台机器,这个又怎么办?
动态配置路由呢?
这个路由配置信息可以自动注册吗?
服务又是怎么注册的?
zookeeper,Eureka, etcd,portmap等等。
服务实例故障后failback又是怎么重新注册的?
这个注册是不是应该有个专门注册的地方?
服务注册中心?
注册的时候是要将远程服务对象注册到Registry上吗?
服务注册了之后又怎么发现这个服务?
发现的时候,发现的服务对象是从Registry查询出来的吗?
服务发现是主动发现还是被动发现的?
failback的服务又是怎么发现的?
这个服务注册中心是中心化的?
可以是非中心化的?
去中心化呢?
去中心化的分布式服务是怎样的?
如果其中的某台机器出现故障怎么办?
出现故障后怎么将出现故障的机器offline?
如果其中的某台机器负载过高怎么办?
如果在调用某个服务发现服务不可用怎么办?
服务实例failover及failback怎么考虑?
故障容错?
远程调用失败是failfast的还是failback?
调用失败后是要立即重试还是稍后重试?
远程调用上层对象层怎么设计?
远程调用底层Transport怎么设计?
远程调用底层网络层是怎么通信?
IO模型怎么考虑?
基于什么RPC协议?
序列化设计
机器可以一直加下去吗? 可以无限加下去吗?
怎么扩容?
业务请求量降下来了的时候是不是应该多余的机器offline?
怎么缩容?
怎么去评估分布式服务的容量?
要怎么做到弹性伸缩?
要怎么在服务层面上做到弹性伸缩?
整理后再发出来。
相关推荐
谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。 不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源了,官方的代码使用的spring还停留在2.5.6.SEC03的版本,dubbox的...
1、通用分布式事务规范XA 2、JAVA分布式事务规范(JTA) 3、常用的分布式事务框架: 2PC/3PC(强一致性事务) TCC(事务补偿) MQ(消息事务) Seata(柔性事务) Saga
#资源达人分享计划#
当谈到分布式系统和大数据处理时,以下是一重要的知识总结: 1. 分布式系统:分布式系统是由多个独立计算机组成的网络,这些计算机通过消息传递进行通信和协调,以实现共同的目标。关键概念包括: - 水平扩展:...
分布式系统框架 一。项目简介 这是基于Linux平台C ++编写的分布式系统框架,非常适合Linux某些项目有需求的同学学习。 主要包含四个文件,分别是服务器端,客户端,负载均衡服务器端以及信息采集器。 涉及到的技术:...
谈到微服务的设计和开发,大家可能会想到 Netflix OSS Spring Cloud Service CombService Mesh 等技术。 Ne ix oss 可以说是最早使用微服务架构的一个开源技术,它的注册中心( Eureka )、负载均衡(Ribbon ),...
分布式系统理念渐渐成为了后台架构技术的重要选择,本文介绍了作者在手游领域对分布式系统进行的种种尝试,并在尝试中制定了对服务的定义、整体框架的构建以及服务内部拆分的流程。业务规模不断扩大,对稳定性、扩展...
超大模型高效训练的分布式框架Whale 飞桨:源于产业实践的开源深度学习平台 MegEngine DTR 技术与训练框架技术创新 构建高效易用的图深度学习平台 三、端侧推理 Tengine-边缘AI异构计算平台 面向AIoT的深度学习框架...
话说2021年开始了一个基于ASP.NET Core 微服务的项目,谈到微服务 多库环境下 分布式事务、分库分表这些问题都是逃不开的,于是首先从ORM开始调研,需要考虑到一些重要的因素 **功能强大、支持多种数据库(并且行为...
我不想过多的去谈抽象类和接口的区别,在后续的例子中我们将使用接口。由于接口在进行“动态代理” 时仍能保持类型信息,而抽象类可能由于代理的原因导致继承关系的“截断”(如MixIn等)。除此之外,对于单继承的C#...
DataFunSummit:2021年AI基础...Milvus+Towhee:向量数据库及embedding流水线 突破 PyTorch、TensorFlow并行瓶颈的训练加速框架到底是啥 Tengine-边缘AI异构计算平台 NVIDIA GPU架构下稀疏特性的实践与挑战 等等文档
同时本书从WCF的服务端框架和客户端框架进行深层次的剖析,介绍了服务寄宿和服务调用;对实例化和会话进行了讨论,从服务实例的激活和客户端状态保持两个侧面详细介绍WCF的实例上下文提供机制和基于会话信道的会话...
Google分布式计算框架(MR) Google Bigtable Database 4.2大数据应用 对企业大数据应用的理解 大数据流式计算技术解析之一 大数据流式计算技术解析之二 延伸阅读 JamesHamilton的演讲和论文 从CAP定理看设计...
177.谈一谈你对Selenium和PhantomJS了解 178.平常怎么使用代理的 ? 179.存放在数据库(redis、mysql等)。 180.怎么监控爬虫的状态? 181.描述下scrapy框架运行的机制? 182.谈谈你对Scrapy的理解? 183.怎么样让 ...
第 24 章 对 Python-memcache 分布式散列和调用的实现 第 25 章 Parallel Python 实现程序的并行多 cpu 多核利用【pp 模块】 第 26 章 关于 python 调用 zabbix api 接口的自动化实例 [结合 saltstack] 第 27 章 ...
前端性能优化和框架(前端方向) UI/UX 设计(前端方向) 技术资源集散地 皓叔谈攻略的正确打开方式 到这里,我估计《程序员练级攻略》系列文章你都已经了解个大概了,不知道此时此刻你有什么样的感受?这份攻略其实...
具备良好的可扩展性,⽀持关键字驱动,可以同时测试多种类型的客户端或 者接⼝,可以进⾏分布式测试执⾏。 RF框架是基于python 的,所以⼀定要有python环境。robotframework 本质就是python的⼀个模块,安装它的命令...
12.2.2 再谈实现和接口 182 12.2.3 方法如何保存 183 12.3 串行化过程中使用XML 183 12.4 写到关系数据库 186 12.5 加载驱动程序 189 12.5.1 建立连接 189 12.5.2 SQL语句 190 12.6 小结 192 12.7 参考书目...
出版信息编辑译者:韩冀中出版社:人民邮电出版社出版时间:2011年10月版次:1.1开本:16开装帧:平装字数:417千字页数:253页内容简介编辑作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,...