# 知識點2
mvc架構,當業務規模很小時,將所有功能都部署在同一個進程中,通過雙機或者負載均衡器實現負載分流,此時分離前后臺邏輯的Mvc架構是關鍵,
RPC架構,當垂直的應用越來越多,應用之間交互不可避免,將核心和公共業務抽取出來,作為獨立的服務,實現前后臺邏輯的分離,此時用于提高業務復用及拆分的rpc架構是關鍵
soa架構,隨著業務發展,服務數量越來越多,服務生命周期管控和運行態的治理成為瓶頸,此時用于提升服務質量的soa服務治理是關鍵
微服務架構,通過服務的原子化拆分以及微服務的獨立打包部署升級,小團隊的交付周期將縮短,運維成本也將大幅度下降。
在分布式系統中同時滿足一致性,可用性和分區容錯性三者是不可能的。在互聯網領域的絕大多數場景都需要犧牲強一致性來換取系統的高可用性,系統往往只需要保證最終一致性,只要這個最終時間,使得用戶可以接受的范圍內即可。
可以通過本地消息表來實現分布式事務。將本地事務憑證消息插入到數據庫表中。通過高性能的mq或者輪詢數據庫的方式來查詢消息表。在消費方處理完消息之后,進行事務的記錄。防止事務消息重復執行。
過濾器和攔截器之間的區別,
一攔截器是基于java的反射機制的,而過濾器是基于函數回調,
二攔截器不依賴于servlet的容器,過濾器則依賴servlet的容器,
三攔截器只能對action請求起作用而過濾器可以對幾乎所有的請求起作用,
四攔截器可以訪問action上下文,值棧里的對象,而過濾器不能訪問
五,在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次,
六攔截器,可以獲得ioc容器中的各個bean,過濾器不行,這點很重要,在攔截器里注入一個service,可以調用業務邏輯。
Thrift是一個可擴展且跨語言的RPC軟件架構,它結合了軟件堆棧和代碼生成引擎,在文件中定義數據類型和服務接口,該文件作為輸入編譯生成RPC客戶端和服務器端代碼。
spring cloud是基于spring boot基礎上構建的,用于快速構建分布式系統的通用模式的工具集。
slf4j(simple logging facade for java)java簡單日志門面,對不同的日志框架提供一個門面封裝。可以在部署的時候不修改任何配置即可接入一種日志實現方案。
Thrift運行時網絡堆棧包括Transport、Protocol、Processor和Server四個部分。Transport提供了通過網絡讀寫數據的方法。Protocol提供了對網絡傳輸數據進行序列化/反序列化的具體實現。Processor:Thrift通過使用編寫的Thrift IDL描述文件來自動生成Processor。Server將Transport、Protocol、Processor組合在一起,將服務運行起來,在指定端口等待調用端的請求。
HBase數據模型:表table,hbase用表來組織數據,表名是字符串;行row,在表里,數據按行存儲。行由行健唯一標識,行健是字節數組byte[];列族column family,行里的數據按照列族分組,列族名稱是字符串;列限定元column qualifier,字節數組byte[];單元cell,單元值沒有數據類型,就是字節數組byte[];時間版本version,單元值有時間版本,hbase保留單元值時間版本的數量基于列族進行配置,默認數量是3個;
AtomicInteger是在使用非阻塞算法實現并發控制,在一些高并發程序中非常適合。