再谈分布式服务及框架。
分布式服务最初是从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?
怎么缩容?
怎么去评估分布式服务的容量?
要怎么做到弹性伸缩?
要怎么在服务层面上做到弹性伸缩?
整理后再发出来。
相关推荐
异步编程特别适合于实现分布式任务注册及调度系统,因为它可以在任务分发给不同处理单元时,有效地提高系统的响应速度和处理能力。 CaesiumServer是一种基于异步式编程实现的分布式任务注册及调度系统。它通过异步...
J2EE基于Java技术,为多层分布式企业应用提供了标准的中间件规范,包括一组技术和服务。本文将详细介绍J2EE框架的构成、其主要优势以及与分布式网络管理的关系。 一、J2EE框架构成 J2EE框架主要包括以下几个层次: ...
分布式内存数据库系统框架通常包含以下几个关键组件: 1. 数据服务器(Data Server):这些是分布在不同机器上的内存数据库服务器。每个服务器管理一部分从传统数据库(如MySQL)中加载的数据。Data Server负责数据...
【分布式存储与计算】\n\n在当今信息化社会,大数据...MapReduce作为其中的代表性模型,为大规模数据处理提供了实用的编程框架。随着技术的发展,分布式计算的应用将更加广泛,对大数据时代的科技创新起到推动作用。
分布式数据库在地理信息系统中的应用是一个非常专业且前沿的话题,它涉及到数据库...未来,随着技术的不断发展和进步,分布式数据库与GIS的结合将更加紧密,为地理空间信息的管理和服务提供更加精准、高效的技术保障。
本文将探讨几种常用的分布式事务处理方案,包括通用分布式事务规范XA、JAVA分布式事务规范(JTA)以及一些常见的分布式事务框架如2PC/3PC、TCC、MQ、Seata和Saga。 #### 二、分布式事务基础知识 ##### 2.1 事务的...
谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。 不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源了,官方的代码使用的spring还停留在2.5.6.SEC03的版本,dubbox的...
2. 浅谈分布式架构 分布式架构是现代大型互联网应用的基石,它通过将单一复杂的系统拆分成多个独立的服务,实现了系统的解耦和模块化。以下将介绍三种常见的分布式架构演变过程: 2.1. 单系统 在初期,系统通常是...
【Java分布式应用学习笔记-谈JVM】 在Java分布式应用中,JVM(Java虚拟机)扮演着至关重要的角色。虽然有些人可能认为分布式系统与JVM的关系并不密切,但事实上,尤其是在大型分布式环境,如云计算服务平台,对Java...
当谈到分布式系统和大数据处理时,以下是一重要的知识总结: 1. 分布式系统:分布式系统是由多个独立计算机组成的网络,这些计算机通过消息传递进行通信和协调,以实现共同的目标。关键概念包括: - 水平扩展:...
【ASP.NET Core 分布式 Session 实现】 在 ASP.NET Core 中,Session 是一种持久化用户会话数据的方式,它允许开发者在用户会话期间存储和检索数据。然而,传统的 Session 存储方式可能存在性能瓶颈,因为数据存储...
大部分容错和路由策略可以抽象到分布式服务框架中,通过策略配置方式提供给用户使用,以降低用户的开发成本。服务框架通常会提供扩展点,供业务做路由和容错定制。 #### 服务化实践-本地短路策略 在电信行业中,...
分布式系统框架 一。项目简介 这是基于Linux平台C ++编写的分布式系统框架,非常适合Linux某些项目有需求的同学学习。 主要包含四个文件,分别是服务器端,客户端,负载均衡服务器端以及信息采集器。 涉及到的技术:...
### Java分布式应用学习笔记06浅谈并发加锁机制分析 #### 1. 前言 在深入探讨Java中的并发加锁机制之前,我们有必要回顾一下多线程环境下的一些基本概念和技术。之前的多线程调度、并发调度以及线程加锁安全等内容...
包括倒排索引、B树、哈希表等多种数据结构和算法,以及基于Lucene、Elasticsearch等开源框架的实现。 - **ES讲解及应用实践** Elasticsearch是一个基于Lucene的搜索和分析引擎,非常适合用于处理大规模的数据集,...
云计算开发服务平台的设计与实现涉及到云平台架构的关键概念、开源框架的使用、分布式技术的应用,以及云服务中各项组件的配置与部署。以下是从提供的文档内容中提炼出的详细知识点: 1. OpenShift开源框架: ...
谈到微服务的设计和开发,大家可能会想到 Netflix OSS Spring Cloud Service CombService Mesh 等技术。 Ne ix oss 可以说是最早使用微服务架构的一个开源技术,它的注册中心( Eureka )、负载均衡(Ribbon ),...
总而言之,本文所提出的基于Apache Spark的网络安全入侵检测框架,不仅关注了特征选择算法的优化,还利用了多种高效的数据分类方法,并且充分利用了Apache Spark框架的分布式处理能力和高效的计算能力。这样的系统...