- 浏览: 6961 次
- 性别:
- 来自: 北京
最新评论
文章列表
大型分布式网站的核心思想是采用大量廉价的PC,构建一个低成本、高可用、高可扩展、高吞吐的集群系统,以支撑海量的用户访问和数据存储,理论上具备无限的扩展能力。分布式系统的设计是一门复杂的学习,它涉及通信协议,远程调用,服务治理,系统安全,存储,搜索,监控,稳定性保障,性能优化,数据分析,数据挖掘等各个领域。
分布式服务化大型网站架构
1,架构模式:
分层:企业应用中最常见的一种架构模式,将系统在横向维度上切分成几个部分,第个部分负责一部分相对单一的职责,然后通过 ...
并发级别: 阻塞:悲观控制策略,试图进入临界区前,获取锁,得不到,线程挂起。 无饥饿:锁是公平的,满足先来后到,进行排队。 无障碍:乐观控制策略,线程在操作前,先读取并保存一个“一致性标记”,在操作完成后,再次读取,检查这个标记是否被更改过,如果两者一致,说明资源没有冲突,如果不一致,说明资源可能在操作过程与其他写线程冲突,需要重试操作,而任何对资源有修改操作的线程,在修改数据前,都需要更新这个一致标记,表示数据不再安全。 无锁:无锁的并行都是无障碍的,在无锁的情况下,所有的线程都能尝试对临界区进行访问,但不同的是,无锁的并发保证必然有一个线程能够在有限步内完 ...
Linux线程接口也称为pthread或POSIX线程,Linux2.6以后,采用Native POSIX线程库的新线程实现。
1, 互斥量
头文件<pthread.h> pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
静态分配:
pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
...
现代Linux系统中存在大量的并发来源,导致可能的竞态,竞态通常作为对资源的共享访问结果而产生。访问管理的常见技术称为“锁定”或者“互斥”——确保一次只有一个执行单元可操作共享资源。在Linux内核中,主要的 ...
一, AOF(Append Only File)持久化
1.原理
AOF是通过保存发送到服务器端的命令来保存数据库状态,类似关系数据库的redo log。Redis Client SDK,比如Jedis,与Redis Server通信的协议是 RESP (REdis Serialization Protocol), AOF本质就是把RESP的内容直接以Append的方式保存到文件里。以SET KEY VALUE命令为例,追加到AOF文件的内容是:
...
yum install kernel-headers-$(uname -r) kernel-devel-$( uname -r) -y
cat > env.sh <<EOF
export GOROOT=/usr/local/go
export GOPATH=/root/GoSpace
export GOBIN=/root/GoSpace/bin
export PAHT=$PATH:$GOROOT/bin:$GOBIN
EOF
1,下载JDK8 eclipse-cpp-neon-3-win32-x86_64
2,
3 go.exe get -u github.com/nsf/gocode
go.exebuild github.com/nsf/gocode
4 go.exe get -u github.com/rogpeppe/godef
go.exe build github.com/rogpeppe/godef
5 go.exe get -u golang.org/x/tools/cmd/guru
go.exe build golang.org/x/tools/cmd/guru
...
应用程序利用read,write系统调用对设备进行读写操作时,由于设备在实际的操作中响应速度各不相同,因此数据并不总是在任何时候都可用:对读操作来说,请求的数据还没有到达设备缓冲区,对于写操作,应用传递过来的数据也许不能一下子全部放进设备狭小的缓冲区,此时内核要么返回一个错误码给上层,要么让发起读写操作的进程进入等待状态。
1,struct file_operations:Linux设备驱动的编写,基本上是围绕如何实现该结构体的函数指针成员,应用程序的read(),write()等,最终被转接到该结构体中对应的函数指针的具体实现上。
struct file_operati ...
1,微服务架构:没有明确的定义,它采用一组服务的方式来构建一个应用,服务独立部署在不同的进程中,不同服务通过一些轻量级交互机制来通信,如RPC,HTTP等,服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服 ...
在物理内容定义方面Linux引入了内存结节(node), 内存区(zone), 内存页page的概念。对物理内存的管理分两部分:最底层实现的页面级内存管理伙伴系统,基于伙伴系统实现的内核对象缓存和通用缓存Slab内存管理。
2,伙伴系统(Buddy System)
节点:内核以struct pglist_data数据结构统一表示UMA系统和NUMA系统的内存结点,UMA只有一个内存节点,NUMA以链表的形式把内存节点串联起来。
typedef struct pglist_data { struct zone node_zones[MAX_ ...
1,进程的概念
进程就是处于执行期的程序,包括代码段,打开的文件,挂起的信号,内核内部数据,处理器状态,内存地址空间,一个或多个执行线程,数据段等。Linux内核对进程和线程并不做特殊的区分。
内核把进程也叫做任务,进程描述符的数据结构类型为task_struct,在32位机器上有1.7KB。
struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ struct thread_info *thread_inf ...
[Desktop Entry]Name=eclipseName[zh_CN]=eclipseComment=eclipse ClientExec=/home/db/eclipse/eclipseIcon=/home/db/eclipse/icon.xpmTerminal=falseType=ApplicationCategories=Application;Encoding=UTF-8StartupNotify=true