後臺服務程序框架技術選型方案

後臺服務程序框架技術選型方案

1.硬件環境

公司服務器前端

2.軟件環境

2.1 操做系統

CentOS 7

2.2 反向代理/web服務器

Nginx

2.3 應用服務器

tomcat

2.4 數據庫

mysql or  oracle
  • mysql
  • oracle 如今公司系統中都有用到不作過多介紹。

2.5 緩存

Redis(Codis) or Memcachedjava

  • Redis 如今公司系統有用到 不作過多解釋
  • Memcached 相似Redis的分佈式緩存服務、只是沒有Redis豐富的數據類型支撐。

建議使用:Redismysql

推薦理由:公司一直在使用、同事熟練程度高。git

2.6 消息隊列

MetaQ or kafka程序員

  • MetaQ 淘寶網開源的消息中間件使用java寫的相似kafka。
  • kafka Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它能夠處理消費者規模的網站中的全部動做流數據

建議使用:kafkagithub

推薦理由:雖然MetaQ我一直在使用並無問題、可是因爲做者基本不更新社區活躍程度低。反而Kafka社區活躍、各大網站有成熟的解決方案、提供可參考的應用實例多。web

3.工程構建和管理工具

  1. Maven 開發人員已經很熟悉了。此處略
  2. Jenkins Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。
  3. 開發工具 Eclipse

一個簡單的持續集成架構圖以下: 輸入圖片說明 如上持續集成能夠實現開發、測試、生產自動化部署管控。方便調試。sql

4.前端技術

數據庫

5.後端技術

  1. Spring MVC
  2. MyBatis
  3. Spring
  4. Dubbox
  5. 模板語言
  6. 配置文件統一管理
  7. 日誌組件
  8. JSON庫包
  9. DataSource數據源

5.1 Spring MVC

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裏面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,能夠選擇使用Spring的SpringMVC框架或集成其餘MVC開發框架,如Struts1,Struts2等。apache

推薦使用理由:公司項目中一直在使用而且也是時下流行的技術框架。

熟練程度:熟練使用。

5.2 MyBatis

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,而且更名爲MyBatis 。 2013年11月遷移到Github。iBATIS一詞來源於「internet」和「abatis」的組合,是一個基於Java的持久層框架。 iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)

推薦使用理由:簡單易用的配置能夠直接經過SQL解決複雜的業務場景。學習成本不算高、替代hibernate。

熟練程度:熟練使用。

5.3. Spring

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson建立。簡單來講, Spring是一個分層的JavaSE/EEfull-stack(一站式) 輕量級開源框架。

推薦使用理由:公司項目中一直在使用而且也是時下流行的技術框架。

熟練程度:熟練

5.4. Dubbox

Dubbo是一個被國內不少互聯網公司普遍使用的開源分佈式服務框架,即便從國際視野來看應該也是一個很是全面的SOA基礎框架。 做爲一個重要的技術研究課題,在噹噹網咱們根據自身的需求,爲Dubbo實現了一些新的功能,並將其命名爲Dubbox(即Dubbo eXtensions)。

推薦使用理由:能夠解決系統與系統之間複雜調用、能夠實現面向服務SOA編程。簡單實現系統服務化發佈與治理。

熟練程度:熟練使用dubbo服務發佈和服務治理。若是可能能夠快速將單一系統重構爲分佈式服務架構系統。

5.5. 模板語言

  1. freemarker:

    • FreeMarker是一款模板引擎: 即一種基於模板和要改變的數據, 並用來生成輸出文本(HTML網頁、電子郵件、配置文件、源代碼等)的通用工具。 它不是面向最終用戶的,而是一個Java類庫,是一款程序員能夠嵌入他們所開發產品的組件。
  2. Velocity:

    • Velocity是一個基於java的模板引擎(templateengine)。它容許任何人僅僅使用簡單的模板語言(template language)來引用由java代碼定義的對象。
  3. Beetl:

    • Beetl,是Bee Template Language的縮寫,它毫不是簡單的另一種模板引擎,而是新一代的模板引擎,它功能強大,性能良好,秒殺當前流行的模板引擎。 並且還易學易用。

beetl功能與Freemarker功能比較: http://javamonkey.iteye.com/blog/1573346

velocity freemarker比較: http://lishumingwm163-com.iteye.com/blog/933365

推薦使用理由:FreeMarker在公司系統中已經普遍使用、可是我的深深被beetl簡單易用所吸引所以推薦使用。

熟練程度:熟練使用(由於相似FreeMarker、文檔豐富、學習成本低)

5.6. 配置文件統一管理

  1. commons-configuration:
    • Commons Configuration是一個java應用程序的配置管理類庫。能夠從properties或者xml文件中加載軟件的配置信息,用來構建支撐軟件運 行的基礎環境。 在一些配置文件較多較的複雜的狀況下,使用該配置工具比較能夠簡化配置文件的解析和管理。也提升了開發效率和軟件的可維護性。
  2. disconf:
    • Distributed Configuration Management Platform(分佈式配置管理平臺).專一於各類 分佈式系統配置管理 的通用組件/通用平臺, 提供統一的配置管理服務。

推薦使用理由:若是長期考慮建議使用 disconf 。開發、測試、生產運維實現界面配置、後期擴展性高。若是單獨一個子系統使用Commons Configuration足矣。

熟練程度:能夠快速搭建disconf服務器並應用到項目中。

5.7. 日誌組件

logback 和 slf4j 配合使用

推薦使用理由:公司項目中一直在使用而且也是時下流行的技術框架。

熟練程度:熟練使用。並能夠結合logback搭建系統錯誤郵件報警提醒。

5.8. JSON庫包

建議使用 FastJson。參考網址:https://github.com/alibaba/fastjson

推薦使用理由: 零依賴、性能高、強大(支持普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum)。業內普遍使用。

熟練程度:熟練使用

5.9. JDBC鏈接池、監控組件 Druid

建議使用 druid 爲監控而生的數據庫鏈接池。參考網址:https://github.com/alibaba/druid

推薦使用理由:druid爲監控而生、DruidDataSource 高效可管理的數據庫鏈接池。替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫鏈接池

熟練程度:熟練使用。

6.系統數據訪問流程

以下圖歸納系統數據訪問流程: 輸入圖片說明

相關文章
相關標籤/搜索