原创 Apache Spark入門級摘要

Apache Spark是一個圍繞速度、易用性和複雜分析構建的大數據處理框架,Spark有如下優勢: Spark提供了一個全面、統一的框架用於管理各種有着不同性質(文本數據、圖表數據等)的數據集和數據源(批量數據或實時的流數據)

原创 Nginx架構模型

架構模型 nginx在啓動後,在unix系統中會以daemon的方式在後臺運行,後臺進程包含一個master進程和多個worker進程。在調試的時候可以手動地關掉後臺模式,讓nginx在前臺運行,並且通過配置讓nginx取消mas

原创 MySQL分庫分表

一、分表 在日常開發或維護中經常會遇到大表的情況,所謂的大表是指存儲了百萬級乃至千萬級條記錄的表。這樣的表過於龐大,導致數據庫在查詢和插入的時候耗時太長,性能低下,如果涉及聯合查詢的情況,性能會更加糟糕。分表和表分區的目的就是減少

原创 Canal介紹與應用

一、背景 早期,阿里巴巴B2B公司因爲存在杭州和美國雙機房部署,存在跨機房同步的業務需求。不過早期的數據庫同步業務,主要是基於trigger的方式獲取增量變更,不過從2010年開始,阿里系公司開始逐步的嘗試基於數據庫的日誌解析,獲

原创 會話保持原理

1. 什麼是會話保持? 會話保持是負載均衡最常見的問題之一,也是一個相對比較複雜的問題。會話保持有時候又叫做粘滯會話(Sticky Sessions)。會話保持是指在負載均衡器上的一種機制,可以識別客戶端與服務器之間交互過程的關連

原创 MySQL慢查詢日誌

一、簡介 開啓慢查詢日誌,可以讓MySQL記錄下查詢超過指定時間的語句,通過定位分析性能的瓶頸,才能更好的優化數據庫系統的性能。 二、參數說明 slow_query_log:慢查詢開啓狀態 slow_query_log_fil

原创 Java類初始化順序

先不考慮父類。初始化的一個大原則是: (1)靜態域成員(靜態變量和靜態代碼塊)最先; (2)非靜態域成員(成員變量和初始化代碼塊)先於構造函數; (3)同是靜態域成員或同是非靜態域成員,則先後順序和代碼順序一致 public cl

原创 Redis緩存與數據庫一致性方案

使用Redis緩存的模式的有很多種,下面就逐一介紹。 一、數據庫和redis分別處理不同的數據類型 數據庫處理要求強一致實時性的數據,例如金融數據、交易數據; redis處理不要求強一致實時性的數據,例如網站最熱貼排行榜; 二

原创 Redis Cluster介紹

1. Redis Cluster介紹 Redis Cluster是Redis的分佈式解決方案,在Redis 3.0版本正式推出的,有效解決了Redis分佈式方面的需求。當遇到單機內存、併發、流量等瓶頸時,可以採用Cluster架構

原创 CDN原理與使用

一、概述 背景: 當下的互聯網應用都包含大量的靜態內容,但靜態內容以及一些準動態內容又是最耗費帶寬的,特別是針對全國甚至全世界的大型網站,如果這些請求都指向主站的服務器的話,不僅是主站服務器受不了,單端口500M左右的帶寬也扛不

原创 Java GC算法

GC算法 內存垃圾回收主要集中於 java 堆和方法區中。 對象存活判斷 判斷對象是否存活一般有兩種方式: 引用計數:每個對象有一個引用計數屬性,新增一個引用時計數加1,引用釋放時計數減1,計數爲0時可以回收。此方法簡單,無法解

原创 MySQL的跨庫join

功能需求 首先要理解原始需求是什麼,爲什麼要跨庫join。舉個簡單的例子,在日誌數據庫log_db有一份充值記錄表pay_log,裏面的用戶信息只有一個userid;而用戶的詳細信息放在主庫main_db,裏面有用戶的詳細信息表u

原创 Servlet 3.0/3.1 中的異步處理

在Servlet 3.0之前,Servlet採用Thread-Per-Request的方式處理請求,即每一次Http請求都由某一個線程從頭到尾負責處理。如果一個請求需要進行IO操作,比如訪問數據庫、調用第三方服務接口等,那麼其所對

原创 微服務架構下的數據一致性

一、分佈式事務保證一致性 1.1 兩階段提交 在分佈式系統中,每個節點雖然可以知曉自己的操作時成功或者失敗,卻無法知道其他節點的操作的成功或失敗。當一個事務跨越多個節點時,爲了保持事務的ACID特性,需要引入一個作爲協調者的組件來

原创 Redis鍵過期-內存淘汰-持久化原理

1. Redis數據過期策略 轉自:https://www.cnblogs.com/xuliangxing/p/7151812.html 1.1 設置過期時間 Redis對存儲值的過期處理實際上是針對該值的鍵(key)處理的,即時