目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7092.5k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(263)
赞(0)

6、为什么要用分布式?为啥要用 Dubbo?这样回答无懈可击

image-20230420102256707

现在出去面试,分布式的问题都成标配了,没有哪个公司不问你分布式的事儿。你要是不会分布式的东西,这简历简直没法看,也没人请你去面试。

image-20230420102134789

  • 不拆分的缺点

    • 复杂性高:由于是一个单机系统,所以整个系统的模块是耦合在一起的,模块的边界比较模糊、依赖关系错综复杂。功能的调整,容易带来不可知的影响和潜在的Bug风险。
    • 服务性能问题:单机系统遇到性能瓶颈问题,只能横向扩展,增加服务实例,进行负载均衡分担压力。无法纵向扩展,做模块拆分。
    • 扩缩容能力受限:单机应用只能作为一个整体进行扩展,影响范围大,无法根据业务模块的需要进行单个模块的伸缩。
    • 无法做故障隔离:当所有的业务功能模块都聚集在一个程序集当中,如果其中的某一个小的功能模块出现问题(如某个请求堵塞),那么都有可能会造成整个系统的崩溃。
    • 发布的影响范围较大:每次发布都是整个系统进行发布,发布会导致整个系统的重启,对于大型的综合系统挑战比较大,如果将各个模块拆分,哪个部分做了修改,只发布哪个部分所在的模块即可。
  • 拆分后的优点

    • 一些列的独立的服务共同组成系统
    • 单独部署,跑在自己的进程中
    • 每个服务为独立的业务开发
    • 分布式管理
    • 非常强调隔离性
    • 自动化运维( DevOps )
    • 高度容错性
    • 快速演化和迭代

    要提醒的一点是,系统拆分成分布式系统之后,同时要面临分布式系统带来的复杂技术挑战。

拆分后为啥要用Dubbo?

其实也可以不用Dubbo,各个系统之间直接基于Spring MVC,HTTP接口互相通信。但是这个肯定是有问题的,因为http接口通信维护起来成本很高,你要考虑超时重试、负载均衡等等各种乱七八糟的问题,比如说你的订单系统调用商品系统,商品系统部署了5台机器,你怎么把请求均匀地甩给那5台机器?这不就是负载均衡?你要是都自己搞那是可以的,但是确实很痛苦。

Dubbo说白了就是一种RPC(Remote Process Call)框架,就是本地就是进行接口调用,但是Dubbo会代理这个调用请求,跟远程机器网络通信,帮你处理负载均衡、服务实例上下线自动感知、超时重试,等等乱七八糟的问题。这些都不用自己做,用Dubbo就可以了。

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2