大型网站系统与Java中间件实践学习笔记

3 篇文章 0 订阅

分布式系统的基础知识

各种锁

互斥锁:共享资源的使用是互斥的,即一个线程获得资源的使用权后就会将该资源加锁,使用完后会将其解锁,如果在使用过程中有其他线程想要获取该资源的锁,那么它就会被阻塞陷入睡眠状态,直到该资源被解锁才会被唤醒,如果被阻塞的资源不止一个,那么它们都会被唤醒,但是获得资源使用权的是第一个被唤醒的线程,其它线程又陷入沉睡.

读写锁:它拥有读状态加锁、写状态加锁、不加锁这三种状态。
只有一个线程可以占有写状态的锁,但可以有多个线程同时占有读状态锁,这也是它可以实现高并发的原因。当其处于写状态锁下,任何想要尝试获得锁的线程都会被阻塞,直到写状态锁被释放;如果是处于读状态锁下,允许其它线程获得它的读状态锁,但是不允许获得它的写状态锁,直到所有线程的读状态锁被释放;为了避免想要尝试写操作的线程一直得不到写状态锁,当读写锁感知到有线程想要获得写状态锁时,便会阻塞其后所有想要获得读状态锁的线程。所以读写锁非常适合资源的读操作远多于写操作的情况。

自旋锁:自旋锁是一种特殊的互斥锁,当资源被枷锁后,其他线程想要再次加锁,此时该线程不会被阻塞睡眠而是陷入循环等待状态(不能在做其它事情),循环检查资源持有者是否已经释放了资源,这样做的好处是减少了线程从睡眠到唤醒的资源消耗,但会一直占用CPU的资源。适用于资源的锁被持有的时间短,而又不希望在线程的唤醒上花费太多资源的情况。

递归锁:同一个线程可以多次获得该资源锁,别的线程必须等该线程释放所有次数的锁才可以获得。

各种网络

一、LAN——局域网

局域网(英文:Local Area Network 缩写LAN),是指有限区域(如办公室或楼层)内的多台计算机通过共享的传输介质互连,所组成的封闭网络。局域网一般由网络硬件,网络传输介质和网络软件所组成。

局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。共享的互连介质通常是一个电缆系统(如双绞线、同轴电缆、光纤等),也可以是红外信号、无线电等无线传输传输介质。依据拓扑结构的不同,局域网又分为以太网、令牌环网、无线局域网等类型。

二、MAN——城域网

城域网(Metropolitan Area Network)是在一个城市范围内所建立的计算机通信网,简称MAN,属宽带局域网。由于采用了有源交换元件的局域网技术,网中传输时延较小,它的传输媒介主要采用光缆,传输速率在100兆比特/秒以上。MAN的一个重要用途是用作骨干网,通过它将位于同一城市内不同地点的主机、数据库以及LAN等互相联接起来,这与WAN的作用有相似之处,但两者在实现方法与性能上有很大差别。基于一种大型的LAN,通常使用与LAN相似的技术。

 

三、WAN——广域网

广域网WAN(Wide Area Network)也叫远程网RCN,它的作用物理范围范围大,一般可以从几十公里至几万公里。一个国家或国际间建立的网络都是广域网。在广域网内,用于通信的传输装置和传输介质可由电信部门提供。

覆盖的范围比局域网(LAN)和城域网(MAN)都广。广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。

广域网是由许多交换机组成的,交换机之间采用点到点线路连接,几乎所有的点到点通信方式都可以用来建立广域网,包括租用线路、光纤、微波、卫星信道。而广域网交换机实际上就是一台计算机,有处理器和输入/输出设备进行数据包的收发处理。

网络模型

ISO的OSI模型

 

OSI七层网络模型

TCP/IP四层概念模型  

对应网络协议

应用层(Application)

应用层

HTTP、TFTP, FTP, NFS, WAIS、SMTP

表示层(Presentation)

Telnet, Rlogin, SNMP, Gopher

会话层(Session)

SMTP, DNS

传输层(Transport)

传输层

TCP, UDP

网络层(Network)

网络层

IP, ICMP, ARP, RARP, AKP, UUCP

数据链路层(Data Link)

数据链路层

FDDI, Ethernet, Arpanet, PDN, SLIP, PPP

物理层(Physical)

IEEE 802.1A, IEEE 802.2到IEEE 802.11

网络IO实现方式

BIO、NIO、AIO

JAVA BIO与NIO、AIO的区别(这个容易理解)_涂有的博客-CSDN博客

netty:Netty 5用户指南 | 并发编程网 – ifeve.com

Java中间件

1. java运行环境JVM,java byte code的运行环境,hotspot应该是使用最广泛的的一个虚拟机产品。

HOTSPOT JVM的内存布局,Young/Tenured/Perm 新生代、老年代、持久代。分别由不同的GC方式

2.Java并发编程

 线程池 ThreadPoolExceutor、ScheduledThreadPoolExceutor

ReentrantLock、synchronized、volatile、

Atomics 原子操作

wait、notify、notifyAll

CountDownLatch、CyclicBarrier

Exchanger 用于两个线程直接进行数据的交换

Future、FutureTask

并发容器:CopyOnWrite和ConCurrent开头的几个容器

3.动态代理与静态代理、反射

4.网络通信:netty、mina

服务框架

RPC(Remote Procedure Call)

灰度发布

服务治理:管理服务和查看服务

数据访问层

数据垂直/水平拆分

分布式事务规范 XA

两阶段提交

大型网站一致性的基础理论---CAP/BASE

CAP(Consistency 一致性、Availability 可用性、Partition-Tolerance 分区容忍性)

BASE(Basically Available 基本可用,允许分区失败,Soft state 软状态、Eventually consistent 最终一致  保证最终数据的状态一致的)

Paxos协议(前提是不存在拜占庭将军问题)

从工程上来说,如果能够避免分布式是我的引入,那么还是避免为好。如果实在要引入,可以考虑最终一致的方法,不必要追求强一致

多机Sequence问题与处理、外键约束、跨库jion、跨库查询(排序、函数处理max、sum、count..)、求平均值、非排序分页、排序后分页

一致性哈希算法

数据源 org.vanadies.ddal.DataSource、org.vanadies.ddal.GroupDataSource、AtomDataSource

读写分离  主备库 数据平滑迁移

消息中间件

JMS(Java Message Serivce)  是 javaee中的一个关于消息的规范, hornetq、activemq 是实现

最基本的特点:采用消息中间件可以进行应用之间的解耦及操作的异步

还需考虑:顺序保证、扩展性、可靠性、业务操作、与信息发送一致性以及 多集群订阅者等

JMS Queue模型:消息被一个应用处理后,其他应用就收不到这个消息了,应用共同消费了所有的消息

JMS Topic模型(Pub/Sub方式):所有应用都能接到到每个消息

消息订阅者订阅消息的方式:持久订阅、非持久订阅

软负载中心与集中配置管理

软负载中心最基础的职责:聚合地址信息、生命周期感知

软负载中心的结构:服务端(负责感知提供服务的机器是否在线,聚合提供者的机器信息,并且负责吧数据传给使用数据的应用)与客户端(有两个角色,作为服务提供者:吧服务提供者提供服务的具体信息主体传给服务端;作为服务使用者:向服务端告知自己所需要的数据并负责去更新数据,本地化数据缓存、通过本地的数据缓存,使得每次去请求服务列表都是一个本地操作。)

集中配置管理中心,可以从数据是否持久以及是否需要聚合两个维度进行分类, 持久指的是数据本身与联发布者的生命周期无关的,典型的是持久订阅关系、路由规则、数据访问层的分库分表规则和数据库配置等;非持久是发布则生命周期有关联的,例如服务地址列表。集中配置管理中心存储的基本都是各个应用集群、中间件产品的关键管理配置信息,已经一些配置开关,可进行运行时的控制,通过改变配置的内容进而影响应用的行为。

构建大型网站的其他要素

CDN(Content Delivery Network) 内容分发网络。作用:把用户需要的内容分发到离用户近的地方,这样可以使用户能够就近获取所需的内容。CDN是一种网络缓存技术,一方面可以节省整个广域网的带宽消耗,另一方面可以提升用户的访问速度。

大型网站的存储支持:

       分布式文件系统 GFS.

       NoSQL

       缓存系统: redis  Memcache

搜索系统:爬虫问题、倒排索引、查询预处理、相关度计算

数据计算支撑:离线计算 MapReduce(Hadoop) 在线计算(Storm)

发布系统:分发应用、启动校验、灰度发布(主要是针对新应用在用户体验方面完全感知不到的更新)

应用监控系统:数据监视维度、数据记录方式、数据采集方式、展现于告警

依赖管理系统

多机房问题分析

系统容量规划

内部私有云

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IccBoY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值