原创 集羣、分佈式環境下5種session處理策略

在搭建完集羣環境後,不得不考慮的一個問題就是用戶訪問產生的session如何處理。如果不做任何處理的話,用戶將出現頻繁登錄的現象,比如集羣中存在A、B兩臺服務器,用戶在第一次訪問網站時,Nginx通過其負載均衡機制將用戶請求轉發到A服

原创 源碼解析-集合-HashMap

一、HashMap概述   HashMap基於哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵。(除了不同步和允許使用 null 之外,HashMap 類與 Hashtable 大致

原创 Web安全漏洞及解決辦法

Web 安全問題,很多時候會被程序員所忽略,因爲他們相信會有專業的運維人員或者安全服務團隊幫助他們尋找漏洞,並且指導他們修改這些漏洞。而對於小公司,沒有這樣專業的人員又怎麼辦呢?安全漏洞造成了很多不必要的維護和開發任務,產生的問題有時候更

原创 Java序列化的幾種方式

一.Java序列化的作用    有的時候我們想要把一個Java對象變成字節流的形式傳出去,有的時候我們想要從一個字節流中恢復一個Java對象。例如,有的時候我們想要把一個Java對象寫入到硬盤或者傳輸到網路上面的其它計算機,這時我們就

原创 分佈式架構的演進過程

系統架構演化歷程-初始階段架構 初始階段 的小型系統 應用程序、數據庫、文件等所有的資源都在一臺服務器上通俗稱爲LAMP 特徵: 應用程序、數據庫、文件等所有的資源都在一臺服務器上。 描述: 通常服務器操作系統使用Linux,

原创 memcached-1-memcached的基礎

memcached是什麼? memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 爲首開發的一款軟件。現在已成爲 mixi、 hatena、 Facebook、

原创 memcached-5-memcached的應用和兼容程序

到上次爲止, 我們介紹了與memcached直接相關的話題,本次介紹一些mixi的案例和 實際應用上的話題,並介紹一些與memcached兼容的程序。 mixi案例研究 mixi在提供服務的初期階段就使用了memcached。 隨着

原创 memcached-2-理解memcached的內存存儲

Slab Allocation機制:整理內存以便重複使用 最近的memcached默認情況下采用了名爲Slab Allocator的機制分配、管理內存。 在該機制出現以前,內存的分配是通過對所有記錄簡單地進行malloc和free來進

原创 可重入鎖和不可重入鎖

一、鎖的簡單應用 用lock來保證原子性(this.count++這段代碼稱爲臨界區) 什麼是原子性,就是不可分,從頭執行到尾,不能被其他線程同時執行。 可通過CAS來實現原子操作 CAS(Compare and Swap): CAS操

原创 volatile深入分析( 什麼時候使用volatile)

volatile 變量提供了線程的可見性,並不能保證線程安全性和原子性。 什麼是線程的可見性: 鎖提供了兩種主要特性:互斥(mutual exclusion) 和可見性(visibility)。互斥即一次只允許一個線程持

原创 memcached-4-memcached的分佈式算法

memcached的分佈式 正如第1次中介紹的那樣, memcached雖然稱爲“分佈式”緩存服務器,但服務器端並沒有“分佈式”功能。 服務器端僅包括 第2次、 第3次 前阪介紹的內存存儲功能,其實現非常簡單。 至於memcache

原创 Redis與Memcached的區別(一)

傳統MySQL+ Memcached架構遇到的問題   實際MySQL是適合進行海量數據存儲的,通過Memcached將熱點數據加載到cache,加速訪問,很多公司都曾經使用過這樣的架構,但隨着業務數據量的不斷增加,和訪問量的持續增長

原创 memcached-3-memcached的刪除機制和發展方向

memcached是緩存,所以數據不會永久保存在服務器上,這是向系統中引入memcached的前提。 本次介紹memcached的數據刪除機制,以及memcached的最新發展方向——二進制協議(Binary Protocol) 和外部

原创 Redis與Memcached的區別(二)

Redis的作者Salvatore Sanfilippo曾經對這兩種基於內存的數據存儲系統進行過比較: Redis支持服務器端的數據操作:Redis相比Memcached來說,擁有更多的數據結構和並支持更豐富的數據操作,通常在Memca

原创 億級Web系統搭建——單機到分佈式集羣

當一個Web系統從日訪問量10萬逐步增長到1000萬,甚至超過1億的過程中,Web系統承受的壓力會越來越大,在這個過程中,我們會遇到很多的問題。爲了解決這些性能壓力帶來問題,我們需要在Web系統架構層面搭建多個層次的緩存機制。在不同的壓