1-項目環境搭建與AngulaJs入門

項目類型

  1. 傳統項目:java

    • oa:辦公自動化
    • 財務/股票分析
    • crm
    • erp

    傳統項目的業務邏輯相對更加複雜。由於更多的是公司內網操做。共享少,可參考的項目少linux

  2. 互聯網項目git

    1. 特色
      • 用戶多
      • 併發高
      • 數據量大
    2. 用戶體驗
      • 快(咱們主要解決的問題)
      • 好看(UI)
      • 功能完整性(業務)

主要電商模式

  • B2B:企業對企業:阿里最開始的業務,慧聰網
  • B2C:企業對我的:直接面向消費者銷售產品和服務商業零售模式,主要藉助於互聯網開展在線銷售活動。如:惟品會,噹噹網
  • O2O:線上到線下:線上銷售,線下服務。如:美團、餓了麼
  • B2B2C:企業對企業對我的:第一個B表明商品/服務的供應商(如淘寶店家)第二個B表明從事電子商務的的企業(淘寶平臺)C則指的是顧客。咱們所做的品優購就是一個B2B2C項目。

項目開發步驟

  1. 需求分析:需求分析師/產品經理
  2. 設計:架構師
    1. 數據庫、表設計
    2. UI、UE
    3. 架構設計
  3. 編碼:程序員(佔項目週期的40%)
  4. 測試:測試工程師
  5. 運維:運維工程師

開發模式

瀑布模式:程序員

​ 從1-5依次執行開發步驟,前面的執行完畢才執行下面的步驟。比較浪費人力資源。耗費時間。公司通常不採用github

敏捷開發:web

​ 每一步驟完成一部分即開啓下一步驟。保證了每一個過程當中人員的充分利用。算法

迭代週期每部分完成所須要的時間稱爲一個迭代週期。西安地區通常爲14天。spring

系統架構演變

)

  1. 單一應用架構數據庫

    缺點:全部代碼在一塊兒,難於維護,啓動慢,性能低spring-mvc

  2. 垂直架構(MVC思想)

    將原來單一架構中,具備相同功能的模塊獨立起來,放在不一樣的項目中。造成幾個垂直關係的架構。

    缺點:這些項目之間不通訊。代碼仍然冗餘

  3. RPC:遠程過程調用

    垂直架構再細分,而且項目間通訊

    缺點:服務的提供方,被服務消費方調用。在消費方維護服務提供方的(ip:端口/路徑),當提供方發生變化,消費方也須要修改代碼來應對。耦合大

  4. SOA:面向服務

    註冊中心,服務治理。

品優購架構分析

Dubbo框架

dubbox就是個服務框架,若是沒有分佈式的需求,實際上是不須要用的,只有在分佈式的時候,纔有dubbox這樣的分佈式服務框架的需求,而且本質上是個服務調用的東東,說白了就是個遠程服務調用的分佈式框架。

節點角色說明

​ Provider: 暴露服務的服務提供方。(Service)

​ Consumer: 調用遠程服務的服務消費方。(Controller)

​ Registry: 服務註冊與發現的註冊中心。(Dubbo)

​ Monitor: 統計服務的調用次調和調用時間的監控中心。(能夠在安裝Dubbo的Linux系統的TomCat中配置服務器監控項目以管理Dubbo)

​ Container: 服務運行容器。

調用關係說明

  1. 服務容器負責啓動,加載,運行服務提供者(Service)。
  2. 服務提供者在啓動時,向註冊中心註冊本身提供的服務(須要配置:服務名稱+DubboIP+端口+包掃描)。
  3. 服務消費者在啓動時,向註冊中心訂閱本身所需的服務。
  4. 註冊中心返回服務提供者地址列表給消費者,若是有變動,註冊中心將基於長鏈接推送變動數據給消費者。
  5. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,若是調用失敗,再選另外一臺調用。
  6. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

長鏈接:每次通訊完畢後,不會關閉鏈接,這樣就能夠作到鏈接的複用。長鏈接的好處即是省去了建立鏈接的耗時。

​ 心跳事件:客戶端會開啓一個定時任務,定時對已創建鏈接的對端應用發送心跳請求,服務端則須要特殊處理該請求並給出響應。若是長時間沒有響應。客戶端會斷開鏈接

短鏈接:每次通訊時,建立 Socket;一次通訊結束,調用 socket.close()。這就是通常意義上的短鏈接,短鏈接的好處是管理起來比較簡單,存在的鏈接都是可用的鏈接,不須要額外的控制手段。

註冊中心Zookeeper

官方推薦使用 zookeeper 註冊中心。註冊中心負責服務地址的註冊與查找,至關於目錄服務,服務提供者和消費者只在啓動時與註冊中心交互,註冊中心不轉發請求,壓力較小。

Zookeeper 是 Apacahe Hadoop 的子項目,是一個樹型的目錄服務,支持變動推送,適合做爲Dubbox 服務的註冊中心,工業強度較高,可用於生產環境。

Linux下安裝zk

​ 這裏我把zk安裝在/usr/local/zookeeper下。

​ linux下編輯文件

開啓zk服務:	 	 ./zkServer.sh start
查看zk服務狀態;	./zkServer.sh status
關閉zk服務:		 ./zkServer.sh stop
複製代碼

注意:安裝部署好zk後,關閉虛擬機時選擇掛起,不要直接關閉。下次啓動虛擬機就不須要再手動啓動服務了

Dubbox本地jar包的部署與安裝

直接拷貝項目所需的完整倉庫。並在本地mvn的配置文件中配置阿里雲私服

配置DTD約束

用來給IDE添增強大的提示功能,IDEA好像自己很強大不須要。實際因爲4.2版本可能比較舊。須要手動添加,下面有方法

Linux網絡配置

配置成僅主機模式,且IP第三段設置成25,方便後期使用。DFS

配置完成後,開啓Linux,啓動zk服務。

Dubbo入門小Demo

  1. Service編寫:

    1. 建立Maven項目,打包方式war。導入spring、dubbo相關依賴座標。導入tomcat插件,設置端口8081

    2. 建立service包,Service接口,實現類及其中的方法。Sevice方法上加上@Service註解

      import com.alibaba.dubbo.config.annotation.Service;
      // 注意:此Service必須是Dubbo提供的Service
      @Service
      public class ShowServiceImpl implements IShowService {
      複製代碼
    3. 配置web.xml。加載Spring容器

    4. 配置applicationContext.xml文件。添加Dubbo相關約束和命名空間。配置Dubbo鏈接

      <!--配置服務名-->
      <dubbo:application name="dubbodemo-service"/>
      <!--配置註冊中心,IP,端口-->
      <dubbo:registry address="zookeeper://192.168.25.128:2181"/>
      <!--掃描@Service註解-->
      <dubbo:annotation package="cn.keats.dubbodemo.service" />
      複製代碼
    5. 測試運行:推薦使用IDEA MAVEN HELPER 插件啓動服務器。 file --> settings --> plygins --> 檢索並安裝 maven helper 重啓IDEA

  2. Controller編寫

    1. 建立maven項目,打包依舊war,導入座標。設置tomcat端口 8082 和Service保持不一致,避免端口衝突

    2. 建立controller包,拷貝Service接口,遠程注入Service接口。寫方法,加上@RequestMapping(映射路徑) @ResponseBody(設置響應的字符串用做顯示而不是用做跳轉的頁面路徑)

    3. 配置web.xml 配置post請求亂碼處理,配置DispacherServlet

      <!-- 解決post亂碼 -->
          <filter>
              <filter-name>CharacterEncodingFilter</filter-name>
              <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
              <init-param>
                  <param-name>encoding</param-name>
                  <param-value>utf-8</param-value>
              </init-param>
              <init-param>
                  <param-name>forceEncoding</param-name>
                  <param-value>true</param-value>
              </init-param>
          </filter>
          <filter-mapping>
              <filter-name>CharacterEncodingFilter</filter-name>
              <url-pattern>/*</url-pattern>
          </filter-mapping>
      
          <servlet>
              <servlet-name>springmvc</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <!-- 指定加載的配置文件 ,經過參數contextConfigLocation加載-->
              <init-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath:applicationContext-web.xml</param-value>
              </init-param>
          </servlet>
          <servlet-mapping>
              <servlet-name>springmvc</servlet-name>
              <url-pattern>*.do</url-pattern>
          </servlet-mapping>
      複製代碼
  3. 配置spring-mvc核心配置文件,而且配置Dubbo鏈接。注意:這裏由於Service接口是從Service項目拷貝過來的,要求包路徑一致

  4. 啓動測試。若是服務超時未鏈接,能夠嘗試訪問Tomcat服務器。有多是防火牆阻止了系列請求。關閉防火牆便可

Dubbo管理中心的部署

  1. 拷貝服務端war包到Linux tomcat 服務器 webapp目錄下,tomcat自動發佈項目
  2. 訪問:ip:8080/dubbo-admin 帳號root 密碼 root 來管理Dubbo

相關文章
相關標籤/搜索