• 尚筹网07分布式架构


    架构 

    项目的主体结构

    1、实现业务功能的工程模块

    2、为了应对业务功能之外的需求、压力给项目中增加的中间件等其他系统

    3、为了让整个项目能够顺畅、高效的运行,需要把业务功能和中间件以及其他系统有效的整合起来.

    单一架构

    概念

    一个工程-》一个war-》运行在一个Tomcat

    All in one

    单机版

    ......

    演变

    单体应用架构(水平)

    把原来的一个工程拆分成多个模块分别进行开发,一定程度上提高了模块化程度.

    Web应用程序发展的早期,大部分web工程将所有功能模块放在一个web容器

    优点:

    1、所有的功能集成在一个项目工程中

    2、项目架构简单,前期开发成本低,周期短,小型项目首选

    缺点:

    1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护

    2、系统性能扩展只能通过扩展集群节点,成本高、有瓶颈

    垂直应用架构(垂直)

    随着访问量增大,单一应用增加机器带来的加速度越来越小,因此考虑将应用拆分成不想干的几个应用,以提升效率

    优点

    1、项目架构简单,前期开发成本低,周期短,小型项目的首选

    2、通过垂直拆分,原来的单体项目不至于无限扩大

    3、不同的项目可采用不同的技术

     

    缺点

    1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护

    2、系统性能扩展只能扩展集群节点,成本高、有瓶颈

    开发、扩展、维护、成本

     

    互联网时代的新挑战

    高可扩展性

    项目设计架构的时候要考虑到功能的持续更新.

    高性能

    提高响应速度,系统处理一个请求的时间尽可能短,减少用户等待时间,优化用户体验.

    高并发

    用户访问量非常大时,会增加系统的并发压力.

    分布式架构 

    概念

    一个项目拆分成多个模块项目,每个模块工程都是一个war,运行在各自的tomcat,模块之间可以通过网络互相调用.

    方法远程调用

    本地调用

    在同一个项目内部,不经过网络直接调用方法.不管是我们自己声明的方法还是第三方jar包中的方法都算本地调用.

    远程调用

    意义

    1、对内:让我们能够实现分布式架构

    2、对外:让我们能够调用第三方接口

      a) 发送短信

      b) 查询物流

      c) 执行支付

      d) 天气预报

      e) ....

    思想

    SOA

    Service oriented Archiecture面向服务的架构

    在整个系统中,把相同的功能抽取出来作为一个服务,供系统中的其他模块调用,提高代码的复用性.

    微服务

    微服务强调的特征:独立、可部署

    技术演进

    webService

    解决应用程序之间的跨平台访问问题.基于SOAP/WSDL协议,让应用程序之间可以进行远程通信.

    Dubbo+Zookeeper

    Dubbo:基于RPC的远程过程调用框架

    Zookeeper:基于树形目录结构、异步通知机制的注册中心.

    SpringBoot+SpringCloud

    SpringBoot:开发具体微服务,使用场景启动器快速整合第三方中间件

    SpringCloud:提供的微服务架构整体管理的一站式解决方案

      Eureka:注册中心

      Ribbon:客户端负载均衡

      Feign:远程接口的声明式调用

      Hystrix:服务的熔断、降级、监控

      Zuul:网关

    记忆:恶人副会长、注册客户均衡远程访问服务网关

    相关概念

    接口

    一个以接口为功能代表的分布式环境下的服务模块.

    远程接口的声明式调用

    @Controller
    Public class EmpController{
        //想调用本地方法一样调用远程方法.所有远程方法调用时产生的请求、响应等细节全部被框架屏蔽了
    @Autowired
    Private EmpRemoteService empRemoteService;
    
    }

    注册中心

    远程接口的声明式调用之所以能够实现,就是因为DubboFeign这样的框架把服务的具体信息存入了注册中心,对程序员在上层进行的具体代码编写全部屏蔽细节.

    分布式架构优缺点

    优点

    模块化程度更高,有利于分工

    有利于提升项目性能

      整体提升

      整个项目中每个模块都可以独占一台服务器,整个项目分配到的服务器资源更多

      局部提升

      由于对项目进行了拆分,所以可以有针对性的对项目中局部模块进行专门的优化

      纵向:给当前模块所在的服务器增加硬件资源

      横向:给当前模块配置集群

    缺点

    结构复杂

      调用关系复杂

      部署复杂

    数据不一致问题

      Session不一致问题

      分布式事务问题

    分布式和集群

    相同点

    都需要使用多台服务器

    不同点

    分布式:每台服务器运行的模块不同--异构

    集群:每台服务器上运行模块相同--同构

  • 相关阅读:
    iOS开发UI篇—简单介绍静态单元格的使用
    iOS开发UI篇—UITableview控件使用小结
    iOS开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
    iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
    iOS开发UI篇—实现UItableview控件数据刷新
    iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
    iOS开发UI篇—UITableviewcell的性能问题
    iOS开发UI篇—UITableview控件基本使用
    iOS开发UI篇—UITableview控件简单介绍
    A1055. The World's Richest
  • 原文地址:https://www.cnblogs.com/Adam-Ye/p/13357010.html
Copyright © 2020-2023  润新知