日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java 微网站_java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

發(fā)布時間:2025/4/16 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 微网站_java架构之路-(微服务专题)初步认识微服务与nacos初步搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歷史演變:

以前我們都是一個war包,包含了很多很多的代碼,反正我開始工作的時候做的就是這樣的項(xiàng)目,一個金融系統(tǒng),代碼具體多少行記不清楚了,內(nèi)部功能超多,但是實(shí)際能用到的不多,代碼冗余超大,每次部署大概要10分鐘以上。

這個war包包含了我們的所有,jsp、js、css、java代碼。代碼很臃腫,每次改BUG很容易“碰瓷”。還有很多很多的不方面,這里就不一一列舉了。畫個圖~!

慢慢的我們的用戶越來越多了,一臺服務(wù)器扛不住了,我們于是乎有橫向擴(kuò)展,有了nginx,貌似可以解決我們的一些問題了。

但是...假如我們現(xiàn)在要一個寶淘商城,內(nèi)部包含內(nèi)部訂單模塊,積分模塊,支付模塊,用戶模塊等等,都擠在一個war包,假如訂單模塊需要電腦的磁盤IO,支付模塊需要我們的CPU計(jì)算,這樣我們的服務(wù)器一定是既有一個好的CPU又有一個好的磁盤,也會造成我們的服務(wù)器成本很高。

貌似這樣可以解決了問題,但是還不是最優(yōu)質(zhì)的,這時來了一個大佬,馬丁福勒,就是這個人。他第一次提出了微服務(wù)的思想。我們來簡單拆分一下。

及時用戶量大增,我們覺得我們的訂單服務(wù)有壓力了,我們只需要增加我們的訂單服務(wù)的服務(wù)器就可以了。

我們來明確幾個定義,什么是微服務(wù)?什么又是微服務(wù)架構(gòu)?

微服務(wù):微服務(wù)核心就是把傳統(tǒng)的單機(jī)應(yīng)用,根據(jù)業(yè)務(wù)將單機(jī)應(yīng)用拆分為一個一個的服務(wù),徹底的解耦,每一個服務(wù)都是提供特定的功能,一個服務(wù)只做一件事,類似進(jìn)程, 每個服務(wù)都能夠單獨(dú)部署,甚至可以擁有自己的數(shù)據(jù)庫。這樣的一個一個的小服務(wù)就是 微服務(wù)。這個是摘自馬丁福勒的文章。比如我們的訂單服務(wù),可以成為一個微服務(wù),我們的積分服務(wù),也可以成為一個微服務(wù)。

微服務(wù)架構(gòu):微服務(wù)架構(gòu)是指把 一個一個的微服務(wù)組合管理起來,對外提供一套完整的服務(wù)。

對比優(yōu)缺點(diǎn):

我們現(xiàn)在有了微服務(wù)架構(gòu),難道我們所有的項(xiàng)目都可以調(diào)整為微服務(wù)架構(gòu)嗎?我們來看看傳統(tǒng)架構(gòu)和微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)。

傳統(tǒng)架構(gòu)優(yōu)點(diǎn):

①.就一個war包,運(yùn)維超級幸福。

②.架構(gòu)簡單明了,沒有那些分布式事務(wù),分布式鎖等等問題。

傳統(tǒng)架構(gòu)缺點(diǎn):

①.代碼臃腫,每個程序員需要了解所有模塊的代碼。

②.代碼質(zhì)量參差不齊,每次改BUG容易碰瓷。

③.不便于做擴(kuò)展,架構(gòu)限制性強(qiáng),擴(kuò)展成本高。

④.部署難,代碼行過多,部署半小時很正常。

⑤.如果一個非核心模塊出現(xiàn)問題,會造成整體系統(tǒng)不可用,比如積分模塊內(nèi)存溢出,倒置整個系統(tǒng)宕機(jī)。

看起來傳統(tǒng)架構(gòu)缺點(diǎn)還是不少的,但是也不是每個項(xiàng)目都適合微服務(wù)架構(gòu)的,比如一個小OA系統(tǒng),本來功能就不多,你沒有必要去拆分服務(wù)了,對吧~!我們再來看看微服務(wù)給我們帶來了什么優(yōu)缺點(diǎn)吧。

微服務(wù)的優(yōu)點(diǎn):

①.程序員不需要了解整體業(yè)務(wù),只需專心研究自己關(guān)注的業(yè)務(wù)即可。

②.改BUG時不用提心吊膽,頂多影響自己的服務(wù)不可用,不會導(dǎo)致整體不可用。

③.便于后期的擴(kuò)展,也可以隨時應(yīng)對需求的變化。

微服務(wù)的缺點(diǎn):

①.部署困難,對于運(yùn)維人員有一些壓力(k8s+docker+jenkis )

②.服務(wù)之間的通訊增加了通訊成本。

③.帶來了分布式事務(wù),分布式鎖,分布式JOB等等問題等待我們來解決。

微服務(wù)的適用場景:合適,大型復(fù)雜的項(xiàng)目(來自單體架構(gòu)200W行代碼的恐懼) ,適合快速迭代的項(xiàng)目(來自一天一版的恐懼) ,適合并發(fā)高的項(xiàng)目(考慮彈性伸縮擴(kuò)容的恐懼) ,但我們的微服務(wù)不合適那些業(yè)務(wù)穩(wěn)定,就是修修bug?,改改數(shù)據(jù)的系統(tǒng),迭代周期長,發(fā)版頻率一二個月一次的穩(wěn)定系統(tǒng)。

微服務(wù)架構(gòu)是一個架構(gòu)風(fēng)格, 提倡

①.將一個單一應(yīng)用程序開發(fā)為一組小型服務(wù)。

②.每個服務(wù)運(yùn)行在自己的進(jìn)程中。

③.服務(wù)之間通過輕量級的通信機(jī)制(http rest api)

④.每個服務(wù)都能夠獨(dú)立的部署

⑤.每個服務(wù)甚至可以擁有自己的數(shù)據(jù)庫

搭建nacos:

終于到了我們的代碼環(huán)節(jié),好討厭寫那些理論的定義。

eureka很多人都知道,我們的nacos和eureka的功能差不多,就是eureka是springcloud netflix的nacos是springcloud alibaba的。

nacos的官網(wǎng)是這樣說的:Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置管理、服務(wù)及流量管理。Nacos 幫助您更敏捷和容易地構(gòu)建、交付和管理微服務(wù)平臺。 Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu)(例如微服務(wù)范式、云原生范式)的服務(wù)基礎(chǔ)設(shè)施。

我們盡快進(jìn)入我們的代碼環(huán)節(jié)吧。

2.下載完成直接解壓即可。命令:tar -zxvf nacos-server-1.1.4.tar.gz

3.切換到nacos目錄下的bin目錄,輸入./startup.sh?-m?standalone啟動即可。

4.輸入lsof -i:8848,檢查我們的服務(wù)是否啟動成功。

5.在地址欄輸入http://你服務(wù)器的IP:8848/nacos訪問即可。賬號nacos,密碼nacos,注意你自己的防火墻關(guān)閉,端口外部訪問打開。

單機(jī)的nacos就搭建完成了,我們來看看如何用springboot來配置nacos。

nacos集群配置

①.需要我們自己提前安裝一個nginx和mysql,我以前寫過怎么安裝nginx和mysql的文章,大家不會配置的可以去看一下。

我的nginx配置文件如下

upstream nacos_cluster {

server 192.168.138.110:8848;

server 192.168.138.111:8848;

server 192.168.138.112:8848;

}

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location /nacos {

proxy_set_header Host $host;

proxy_pass http://nacos_cluster/nacos;

}

②.修改nacos配置,切換到我們的nacos的conf目錄下,將cluster.conf.example文件拷貝一份,重命名為cluster.conf。將要集群的IP和端口加入進(jìn)去,例如

192.168.138.110:8848

192.168.138.111:8848

192.168.138.112:8848

③.修改application.properties配置文件,加入mysql配置

spring.datasource.platform=mysql

# 數(shù)據(jù)庫實(shí)例數(shù)量

db.num=1

# 自己數(shù)據(jù)庫的連接信息

db.url.0=jdbc:mysql://192.168.138.119:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=root

db.password=root

④.初始化數(shù)據(jù)庫文件,腳本文件在你的nacos的conf下,有一個nacos-mysql.sql文件。

⑤.啟動,走起。分別訪問http://192.168.138.119/nacos(nginx地址)、http://192.168.138.110/nacos、http://192.168.138.111/nacos、http://192.168.138.112/nacos

總結(jié):

目前為止,我們應(yīng)該對于微服務(wù)和微服務(wù)架構(gòu)有一定了解了。這次我們主要說的我們的注冊中心nacos的搭建,和怎么把服務(wù)注冊到我們的nacos中去,還有我們的nacos的集群搭建,nacos還沒完事呢,后面我會出nacos的使用,和內(nèi)部的一些概念,比如組,版本什么的,到時候看看和ribbon一起說吧。下次博客我們來說說我們的eureka配置吧。

最進(jìn)弄了一個公眾號,小菜技術(shù),歡迎大家的加入

總結(jié)

以上是生活随笔為你收集整理的java 微网站_java架构之路-(微服务专题)初步认识微服务与nacos初步搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。