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

《分布式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,拆分数据库按业务,对数据大的按规则拆分,分离读写操作。

分享到:
评论

相关推荐

    高质量Spring Cloud Alibaba学习笔记

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

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

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

    worldwindjava源码-data-intensive-book:设计数据密集型应用书的注意事项

    世界风java源码读书笔记 | 2020年8月竣工 设计数据密集型应用程序的注意事项 写的 简介: 数据系统架构的广泛概述以及如何为特定应用程序选择数据库。 第 1 部分 基本思想 第 1 章 - 术语 第 2 章 - 数据模型和查询...

    J2EE学习笔记

    第六章:J2EE专题学习 167 6.1:EJB 167 6.2:JMS 172 6.3:Socket 182 6.4:WebService 189 6.5:集群分布式应用(以JBOSS为例) 190 6.6:JNLP原理及应用: 190 6.7:Log4原理及应用: 191 6.8:JFreeChat原理及应用: 191 ...

    2018最新JAVA架构师培训视频教程(附笔记、源码 、视频 网盘链接 详细)

    018最新JAVA架构师培训视频教程(附笔记、源码、视频教程 全网盘链接) 内含完整资料及代码: 一、互联网并发编程 二、互联网网络通信编程 三、JAVA虚拟机 四、Linux部分 五、数据库设计与优化 六、互联网...

    net学习笔记及其他代码应用

    6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? ...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 淘淘商城第六天笔记.doc │ ├─07.第七天 │ 01.第六天内容复习.avi │ 02.课程计划.avi │ 03.redis单机版安装.avi │ 04.redis集群安装.avi │ 05.jedis客户端.avi │ 06.jedis客户端在spring中的配置.avi │...

    毕设&课设&项目&竞赛-基于STM32F407VET6的STM32电机驱动学习笔记.zip

    软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...

    asp.net知识库

    Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    高性能高并发服务器架构大全

     FeedBurner:基于MySQL和JAVA的可扩展Web应用 53  YouTube 的架构扩展 55  了解一下 Technorati 的后台数据库架构 57  Myspace架构历程 58  eBay 的数据量 64  eBay 的应用服务器规模 67  eBay ...

    RobotFramework之关键字.pdf

    ⾃动化相关知识,不过都没有实际操作和练习过,最近⼀个⽉接触到RobotFramework,并 且采⽤了这个⽤python编写的功能⾃动化测试框架来测试我们公司系统,接下来就是学习过 程中的⼀些笔记,若有错误的地⽅还请提出,...

Global site tag (gtag.js) - Google Analytics