腾讯云rocketmq(腾讯云服务器)

admin 180 2022-11-09

阿里云服务器优惠多,折扣错,惊喜多,请咨询:www.wqiis.com

本文目录一览:

delphi 分布式架构怎么学

由于分布式系统所涉及到的领域众多,知识庞杂,很多新人在最初往往找不到头绪,不知道从何处下手来一步步学习分布式架构。

本文试图通过一个最简单的、常用的分布式系统,来阐述分布式系统中的一些基本问题。

负载均衡

分布式缓存

分布式文件系统/CDN

分布式RPC

分布式数据库/Nosql

分布式消息中间件

分布式session问题 

-总结

下图为一个中大型网站/App的基本架构: 

在这个架构中,涉及到以上所列的基本问题:

负载均衡

负载均衡是分布式系统中的一个最最基本的问题。在上图中:

网关需要把请求分发给不同的Tomcat; 

Tomcat需要把收到的请求,分发给不同的Service;

这都需要负载均衡。一句话:凡是请求从一个入口进来,需要分发给后端不同的机器时,就需要负载均衡。

局域网负载均衡

在上图中,负载均衡发生在局域网内部。在这里,常用的网关软件有Nginx/HAProxy/F5/LVS/各种云上的SLB等。

广域网负载均衡

在上图之外,还有广域网负载均衡。这通常发生在域名服务器上,而不是局域网内部。 

同1个域名,映射到不同的局域网集群。

负载均衡算法

常用的负载均衡算法:随机,轮询(Round Robin),最小资源数,hash。

分布式缓存

在上图中,当DB负载过高,我需要为Service机器加缓存时,就遇到一个基本问题: 

如果使用local的内存做缓存,则其他Service机器就没办法共用此缓存。 

因次,我需要一个可以让所有Service机器共享的缓存,这就是分布式缓存。

常用的分布式缓存组件:Memcached/Redis/Tair等

分布式文件系统

在上图中,当我要存储客户端上传的图片文件时,就会遇到另一个基本问题:我不能把图片存在每个Tomcat的本地文件系统里面,这样的话,其他机器就没办法访问了。我需要一个让所有机器可以共享的文件系统,这就是分布式文件系统。

常用的分布式文件系统:MogileFS/TFS/HDFS/Amazon S3/OpenStack Swift等

当使用了分布式文件系统,对外提供图片url访问服务时,就会遇到另一个基本问题:如果每次文件的访问,都要到分布式文件系统里面去取,效率和负载就可能成为问题。 

为此,就需要引入CDN。

常用的CDN厂商,比如ChinCache。当然,现在的各种云存储,比如七牛云,阿里云腾讯云,已经自带了CDN。

分布式RPC

分布式系统的一个基本问题就是:机器与机器之间如何通信? 我们都知道底层原理是TCP/IP,Socket。

但一般很少有人会去裸写Socket,实现机器之间的通信。这里,最常用的组件就是RPC。

最简单的实现RPC的方式就是使用http。当然,业界有很多成熟的开源RPC框架,如Facebook的Thrift, 阿里的Dubbo,点评的Pigeon。。

在RPC内部,一般都自己实现了负载均衡。还有更复杂的,如多版本,服务降级等。

补充一句:虽然底层原理都是Socket,但使用不同框架/组件时,通常都有其自己的跨机器通信方式,比如Mysql JDBC,RPC, 消息中间件等。

分布式数据库

在上图中,DB是单一节点。当访问量达到一定程度,就会涉及到Mysql的分库分表问题。

分库/分表之后,就会涉及到join的问题,分布式事务的问题。

关于分库分表,业界也早有成熟方案。对上层屏蔽分库分表,sql的执行,像是在单库一样。

还有像MongoDB这种Nosql数据库,天生是分布式的。但同样会面对Mysql分库分表所要面对的问题。

还有像阿里的OceanBase,有Mysql的强一致性保证,又是分布式的,还可以支持分布式事务。

分布式消息中间件

在上图中,没有提及到消息中间件。相对其他基本问题,这个需要一个更适合的业务场景来谈,在以后的章节中,会再详述。

常用的消息中间件,比如老一辈的ActiveMQ/RabbitMQ, 新一点的,阿里的RocketMQ,LinkedIn的Kafka等。

消息中间件的一个典型场景就是:通过最终一致性,解决上面的分布式事务问题。

分布式session问题

在传统的单机版应用中,我们经常使用session。而当单机扩展到多机,单机的session就没办法被其他机器所访问。

此时就需要使用分布式session,把session存放在一个所有Tomcat都可以访问的地方。

关于分布式session,业界早有成熟方案,在此不再详述。

总结

本文罗列了分布式系统的各种基本问题和业界常用的技术,希望建立起分布式系统的一个宏观图谱。

大数据工程师需要掌握哪些技能?

对于大数据工程师而言,您至少要掌握以下技能:

一门JVM系语言:当前大数据生态JVM系语言类的比重极大,某种程度上说是垄断也不为过。这里我推荐大家学习Java或Scala,至于Clojure这样的语言上手不易,其实并不推荐大家使用。另外,如今是“母以子贵”的年代,某个大数据框架会带火它的编程语言的流行,比如Docker之于Go、Kafka之于Scala。因此笔者这里建议您至少要精通一门JVM系的语言。值得一提的,一定要弄懂这门语言的多线程模型和内存模型,很多大数据框架的处理模式其实在语言层面和多线程处理模型是类似的,只是大数据框架把它们引申到了多机分布式这个层面。

计算处理框架:严格来说,这分为离线批处理和流式处理。流式处理是未来的趋势,建议大家一定要去学习;而离线批处理其实已经快过时了,它的分批处理思想无法处理无穷数据集,因此其适用范围日益缩小。事实上,Google已经在公司内部正式废弃了以MapReduce为代表的离线处理。因此如果要学习大数据工程,掌握一门实时流式处理框架是必须的。当下主流的框架包括:Apache Samza, Apache Storm, Apache Spark Streaming以及最近一年风头正劲的Apache Flink。当然Apache Kafka也推出了它自己的流式处理框架:Kafka Streams

分布式存储框架:虽说MapReduce有些过时了,但Hadoop的另一个基石HDFS依然坚挺,并且是开源社区最受欢迎的分布式存储,绝对您花时间去学习。如果想深入研究的话,Google的GFS论文也是一定要读的([url=][/url])。当然开源世界中还有很多的分布式存储,国内阿里巴巴的OceanBase也是很优秀的一个。

资源调度框架:Docker可是整整火了最近一两年。各个公司都在发力基于Docker的容器解决方案,最有名的开源容器调度框架就是K8S了,但同样著名的还有Hadoop的YARN和Apache Mesos。后两者不仅可以调度容器集群,还可以调度非容器集群,非常值得我们学习。

分布式协调框架:有一些通用的功能在所有主流大数据分布式框架中都需要实现,比如服务发现、领导者选举、分布式锁、KV存储等。这些功能也就催生了分布式协调框架的发展。最古老也是最有名的当属Apache Zookeeper了,新一些的包括Consul,etcd等。学习大数据工程,分布式协调框架是不能不了解的, 某种程度上还要深入了解。

KV数据库:典型的就是memcache和Redis了,特别是Redis简直是发展神速。其简洁的API设计和高性能的TPS日益得到广大用户的青睐。即使是不学习大数据,学学Redis都是大有裨益的。

列式存储数据库:笔者曾经花了很长的时间学习Oracle,但不得不承认当下关系型数据库已经慢慢地淡出了人们的视野,有太多的方案可以替代rdbms了。人们针对行式存储不适用于大数据ad-hoc查询这种弊端开发出了列式存储,典型的列式存储数据库就是开源社区的HBASE。实际上列式存储的概念也是出自Google的一篇论文:Google BigTable,有兴趣的话大家最好读一下:

消息队列:大数据工程处理中消息队列作为“削峰填谷”的主力系统是必不可少的,当前该领域内的解决方案有很多,包括ActiveMQ,Kafka等。国内阿里也开源了RocketMQ。这其中的翘楚当属Apache Kafka了。Kafka的很多设计思想都特别契合分布流式数据处理的设计理念。这也难怪,Kafka的原作者Jay Kreps可是当今实时流式处理方面的顶级大神。

关于腾讯云rocketmq和腾讯云服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注维启网络。

上一篇:网易邮箱无法登陆(网易邮箱无法登陆怎么办)
下一篇:阿里云邮箱域名注册(阿里云官网域名注册)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~