`
wdhdmx
  • 浏览: 305121 次
  • 性别: Icon_minigender_1
  • 来自: 山西
博客专栏
D4bbb5f7-9aa4-3e66-8194-f61b3f0241c2
天天编程
浏览量:22031
社区版块
存档分类
最新评论

《分布式java应用》读书笔记--第六章

阅读更多

林昊 电子工业出版社

第六章 构建高可用的系统

这一章作者提供了解决系统构建各个问题可以用到的知识,但作者没有把具体的解决方案提出来,都是点到为止。

1.避免系统中出现单点    如何均衡的访问到提供业务功能的机器

    如何保证机器出现问题时,用户不会访问到这台机器

2.负载均衡的方式    随机选择,这种方法实现很简单,性能高。

    HASH选择

    典型的应用场景是静态图片的加载。对请求的url串做hash,这样保证每次请求的是用一台机器,命中缓存,提升性能。要读取网络协议的第七层信息,要做hash,会消耗一定的cpu。

    地址选择(Round-Robin)

    比随机多了一个同步操作,实际使用较多

    权重

    实际负载量

    按连接数

     1.这种方法避免重启一台机器,增加了连接数对可用地址列表做排序的负担。
     2.按cookie信息绑定访问机器的方式。

3.响应返回方式

    1.通过负载均衡机器返回。
        这种方法通过NAT实现。
    2.直接返回请求方

4.数据库

    1.可以分开部署读写操作
    2.Gossip是一个去中心化传播时间的模型,这就是1传2,2传4,类似的功能,可以很快完成数据同步
    3.Facebook开源的Cassandra 是一个居于Gossip实现的无中心的Nosql,去掉中心点后性能提升很快
    4.还有机房的一些事情,这段时间不关注

5.提高自身可用性

    1.互联网是一个无限放大故障的地方,任何很小,绝对不可能发生的问题,都可能会在互联网上发生,导致故障。
    2.一方面深入理解所使用的java类库和框架,帮助你清楚了解程序运行状况
    3.另一方面是经验,自身学习和经历,学习获得时一定要了解产生原因。否则很难成为自己的经验。
    4.明确使用场景
        设计很多不必要的功能,没必要的系统扩展,系统功能,将系统复杂化,这些都容易出故障,因此,保持系统的简单,对复杂的系统功能,应分解多个阶段来完成,保持每个阶段的简单。

6.设计容错的系统

    1.FailFast原则
        当主流程的任何一部出现问题,应快速结束整个流程,而表示等后续来处理。通常对传入参数判断是否符合要求,不符合直接抛错
    2.强制使用明确对象,(可以去了解Effective java 提到的设计原则,第1,3,15条)

7.设计具有自我保护的系统

    1.最佳设计方法是对所有的第三方依赖的地方持怀疑态度,这些地方要有保护措施
    2.超数量用户连接数据库,直接抛异常,不等待
    3.限制使用资源(文件,线程,网路,内存)

8.日志,及时处理故障。

    1.功能降级,全局资源调整,降低资源使用。

9.访问量不断上涨应对策略。

    1.像ebay,拆分数据库按业务,对数据大的按规则拆分,分离读写操作。

分享到:
评论

相关推荐

    java学习比记-北大青鸟时做的笔记,每堂课都有

    这些只是Java学习的一部分,实际的Java开发还包括框架学习(如Spring、MyBatis等)、设计模式应用、Web开发、分布式系统等内容。通过北大青鸟的课程笔记,你可以逐步建立起完整的Java知识体系,为成为一名合格的Java...

    毕向东Java笔记

    ### 毕向东Java笔记知识点总结 #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - ...

    Java+JDK+6学习笔记.pdf

    ### Java+JDK+6 学习笔记知识点详解 #### 一、Java 概述 - **起源与发展:** - Java 最初是由 Sun Microsystems 的 Green Project 开发出来的编程语言,最初是为了创建一个名为 Star7 的应用程序。 - 1995 年 5 ...

    java私塾全部笔记

    ##### 第六章 常见类的使用 - **String类** - 字符串的创建和字符串操作方法。 - **日期时间类** - Date、Calendar、LocalDate等类的使用方法。 - **数学类** - Math类提供的数学函数。 ##### 第七章 抽象类和...

    Java+JDK6学习笔记(PDF版书籍,免费下载)

    ### Java+JDK6学习笔记知识点详解 #### 一、Java简介 - **起源与历史:** - 最初由Sun公司的Green Project发起,旨在创建一个名为Star7的应用程序编程语言。 - 名称来源于创始人James Gosling窗外的一棵橡树...

    Java_se基础毕向东老师全程笔记

    ### 第六章:常用类API - **字符串处理**:`String`类和`StringBuilder`类。 - **日期时间操作**:`Date`类、`Calendar`类以及`java.time`包中的类。 ### 第七章:集合框架(容器) - **集合接口**:`Collection`、...

    高质量Spring Cloud Alibaba学习笔记

    第一章 微服务介绍 第二章 微服务环境搭建 ...第六章 Sleuth--链路追踪 第七章 Rocketmq--消息驱动 第八章 SMS--短信服务 第九章 Nacos Config--服务配置 第十章 Seata--分布式事务 扩展章节 Dubbo--rpc通信

    JAVA SE应用程序设计 1-19章代码、课件

    4. **数组与集合框架**:第6章可能涉及数组,包括一维数组和多维数组,而第7章或8章则可能介绍集合框架,如ArrayList、LinkedList、HashSet和HashMap等,它们是存储和管理数据的重要工具。 5. **异常处理**:在Java...

    java数据库笔试题-Java-Interview-Advanced:中华石杉--互联网Java进阶面试训练营

    java数据库笔试题 中华石杉--互联网Java进阶面试训练营 [] [] [] [] [] [] [] [] ...本仓库存放的是公众号【狸猫技术窝】和中华石杉老师合作的课程《互联网Java进阶面试训练营》的笔记,版权归狸猫技术窝...第六季-高可用

    毕向东_Java基础课堂笔记.pdf

    #### 第六章 常用类API - Java提供了丰富的类库支持,如String类、Math类等。 - 这些类提供了各种实用的功能,简化了开发工作。 #### 第七章 集合框架(容器) - 集合框架是Java中用于存储和操作一组对象的标准...

    JAVA编程笔记

    - **Java EE (Java Platform Enterprise Edition)**:用于开发分布式企业级应用,支持 JSP、EJB 等技术。 #### 5. 开发Java程序 - **步骤**:Java 程序开发主要包括三个步骤:编写源程序、编译程序和运行程序。 - ...

    java学习笔记.doc

    - 第6天至第7天:可能会涵盖数组和字符串的使用,这两个在Java编程中非常常见且重要的概念。 - 第8天至第9天:异常处理是Java编程的重要部分,通过try-catch语句块来捕获和处理程序运行时可能出现的问题。 - 第10...

    乔杉架构笔记 Java工程师面试突击

    很抱歉,由于无法直接访问或解析链接内容,我无法提供具体的《乔杉架构笔记 Java工程师面试突击》中的详细知识点。但作为一个专业的IT行业大师,我可以根据通常Java工程师面试中的常见主题,分享一些重要的Java编程...

    传智播客毕向东Java基础课堂笔记

    - **分布式**:Java语言天生支持网络功能,使得创建分布式应用变得更加容易。 - **动态性**:能够根据运行时环境进行自我调整和修改。 - **多线程**:内置了对多线程的支持,可以轻松地开发出多任务处理的应用...

    传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)

    在“传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)”的学习中,我们深入探讨了Hadoop这一分布式计算框架的关键概念和技术。Hadoop是Apache软件基金会的一个开源项目,它设计用于处理和存储海量数据,通过...

    java基础知识笔记

    Java基础是编程世界中至关重要的一个领域,尤其对于那些想要...通过深入学习和实践这些"Core Java"知识点,开发者可以构建出高效、稳定的Java应用程序,并为进阶学习Java高级特性、框架以及分布式系统打下坚实的基础。

    深入java虚拟机笔记

    #### 第六章 Java Class文件 - **Java Class文件的结构**:本章详细介绍了Java Class文件的各个组成部分,包括魔数、版本号、常量池等。 - **魔数**:用于标识该文件是否为有效的Class文件。 - **版本号**:记录...

    Java+JDK6学习笔记.pdf

    ### Java+JDK6 学习笔记精要 #### 一、Java概览与起源 Java,由Sun Microsystems公司的James Gosling在Green Project项目中创建,最初命名来源于他窗户外的一棵橡树(Oak)。随着全球信息网的兴起,Java Applet成为...

    大数据学习笔记

    - **第11章:zookeeper应用程序接口** - **API介绍**:提供了用于开发Zookeeper应用程序的API接口。 - **第12章:zookeeper应用** - **实际案例**:通过具体的案例展示了如何在实际项目中使用Zookeeper。 #### ...

Global site tag (gtag.js) - Google Analytics