zoukankan      html  css  js  c++  java
  • 聊聊、Dubbo源码第一篇

    想了很久,学习是一个过程,应该学会分享和输出,才会有价值和收获,所以下定决心要把自己所看的源码笔记分享出来。

    这是 Dubbo 源码第一篇,计划后面会写 Spring 源码、Tomcat 源码、Zookeeper 源码、Mybatis 源码、Netty 源码、RocketMQ 源码、SpringBoot 源码、SpringCloud 源码、最后 Nginx 源码、Mysql 源码 和 JVM 源码。

    这是一个过程,可能需要一年,也许需要四年,五年。我希望可以坚持写下去,时间就像海绵里的水,挤挤总会有的,O(∩_∩)O哈哈~

    一、源码下载

    可以 git clone https://github.com/apache/dubbo.git

    也可以直接 download

    二、背景

    服务治理框架的诞生并不是一蹴而就,任何新技术的产生都是站在之前技术积累的基础上,这样就可以缩短技术更新时间,也更容易突破。

    1.ORM

    从很早前的单体架构,所有模块在同一个应用中。这样做的好处是,减少通信延迟或者通信不可用,维护容易。坏处就是,一个模块更新需要停止整个应用,还有就是模块与模块之间耦合度太高,并发不够。前端和后端不分离,逻辑和业务不分离。就算是不断增加机器,一台机器一个应用,也会遇到瓶颈。

    2.MVC 

    这里的 MVC 是指前端 WEB 架构,官网说的垂直应用,其实就是分治思想。一个很大的应用,拆分成很多小的应用,但是数据库是同一个。我个人理解,前端和后端分离,业务和逻辑分离。

    3.RPC

    RPC 叫做远程过程调用,意思是从一台机器调用另外一台机器的服务。为什么会有 RPC 出现呢?上面提到了分治思想,大应用拆成N个小应用,应用与应用之间需要通信,那些经常被调用的服务,稳定的服务,就可以抽出来提高服务复用。这些核心服务组成一个公共的模块,也就是所谓的中台。而这些独立出来的服务,可以叫做微服务。每一个微服务可以定义成一个产品,由独立的团队来支持研发和运维,开发语言独立,数据存储独立。这些服务都是部署在不同的机器上面,也就是分布式部署。服务要实现通信,就需要 RPC 框架的出现。

    4.SOA

    微服务,分布式架构,这些技术的出现,解决了高并发,高可用,复用,扩展等等一些问题,但同时也带来了一些问题。首先服务独立,越来越多的服务,运维起来就复杂。其次调用过程复杂,分布式事务,分布式锁。这个时候需要 SOA 框架来统一管理,提高资源利用率,提高可用性,容错性。

    三、架构

    1.调用依赖层架构

     

    2.代码层架构

  • 相关阅读:
    CSS 之 样式优先级机制
    SQL Server 之 修改时不允许保存更改
    IP_TOS选项
    eXosip2代码分析
    Ubuntu下关闭apache和mysql的开机启动
    linphone3.4.0代码分析
    XMPP/Jingle Vs SIP/SIMPLE 的简单介绍
    git命令常见问题总结
    正向代理与反向代理的区别
    SIP中OPTIONS方法的用法及示例
  • 原文地址:https://www.cnblogs.com/xums/p/12550664.html
Copyright © 2011-2022 走看看