基于docker部署的微服务架构(二): 服务提供者和调用者

前一篇 基于docker部署的微服务架构(一):服务注册中心 已经成功创建了一个服务注册中心,现在我们创建一个简单的微服务,让这个服务在服务注册中心注册。然后再创建一个调用者,调用此前创建的微服务。

新建一个maven工程,修改pom.xml引入 spring cloud 依赖:

在 resources 目录中创建 application.yml 配置文件,在配置文件内容:

这里eureka的注册地址为上一篇中设置的defaultZone。
在 java 目录中创建一个包 demo ,在包中创建启动入口 AddServiceApplication.java

在demo包下新建一个子包controller,在controller子包下创建一个controller对外提供接口。

在服务注册中心已经运行的情况下,运行 AddServiceApplication.java 中的 main 方法,启动微服务。
访问服务注册中心页面 http://localhost:8000 , 可以看到已经成功注册了 ADD-SERVICE-DEMO 服务。

启动第二个实例,修改端口为 8101 ,修改 AddController.java 中的输出信息为

再次运行 AddServiceApplication.java 中的 main 方法。
访问服务注册中心页面 http://localhost:8000 , 可以看到已经成功注册了两个 ADD-SERVICE-DEMO 服务,端口分别为 8100 8101

新建一个maven工程,修改pom.xml引入 spring cloud 依赖:

在 resources 目录中创建 application.yml 配置文件,在配置文件内容:

在 java 目录中创建一个包 demo ,在包中创建启动入口 RibbonClientApplication.java

这里配置了一个可以从服务注册中心读取服务列表,并且实现了负载均衡的 restTemplate

在demo包下新建一个子包controller,在controller子包下创建一个controller对外提供接口。

可以看到这里的请求url用了服务注册中心对应的 Application 。

运行 RibbonClientApplication.java 中的 main 方法,启动项目。
在浏览器中访问 http://localhost:8200/add?a=1&b=2 ,得到返回结果:

多次访问,查看 AddServiceApplication 的控制台,可以看到两个 ADD-SERVICE-DEMO 被负载均衡的调用。
demo源码 spring-cloud-1.0/ribbon-client-demo

新建一个maven工程,修改pom.xml引入 spring cloud 依赖:

在 resources 目录中创建 application.yml 配置文件,在配置文件内容:

在 java 目录中创建一个包 demo ,在包中创建启动入口 FeignClientApplication.java

在demo包下新建一个子包service,在service子包下创建一个接口 AddService.java 调用之前创建的微服务 ADD-SERVICE-DEMO

这里 @FeignClient 注解中的参数为服务注册中心对应的 Application 。

在demo包下再新建一个子包controller,在controller子包下创建一个 FeignController.java 对外提供接口。

FeignController 里注入了刚才创建的 AddService 接口。

运行 FeignClientApplication.java 中的 main 方法,启动项目。
在浏览器中访问 http://localhost:8300/add?a=1&b=2 ,得到返回结果:

多次访问,查看 AddServiceApplication 的控制台,可以看到两个 ADD-SERVICE-DEMO 被负载均衡的调用。
demo源码 spring-cloud-1.0/feign-client-demo

以 add-service-demo 为例,
复制 application.yml ,重命名为 application-docker.yml ,修改 defaultZone 为:

这里修改了 defaultZone 的访问url,如何修改取决于部署docker容器时的 --link 参数, --link 可以让两个容器之间互相通信。

修改 application.yml 中的 spring 节点为:

这里增加了 profiles 的配置,在maven打包时选择不同的profile,加载不同的配置文件。

在pom.xml文件中增加:

选择 docker profile,运行 mvn install -P docker ,打包项目并生成docker镜像, 注意docker-maven-plugin中的 <entryPoint> 标签里的内容不能换行,否则在生成docker镜像的时候会报错
运行成功后,登录docker节点,运行 docker images 应该可以看到刚才打包生成的镜像了。

在前一篇中,已经创建了一个 service-registry-demo 的docker镜像,这里先把这个镜像运行起来。

对这条命令做个简单说明, -d 指定当前容器运行在后台, --name 指定容器名称, --publish 指定端口映射到宿主机, --volume 这个挂载是为了解决容器内的时区和宿主机不一致的问题,让容器使用宿主机设置的时区,最后指定使用的docker镜像,镜像名称和标签需要根据自己的情况做修改。
运行这条命令之后, service-registry-demo 的容器就启动了。访问 http://宿主机IP:8000 ,打开注册中心的页面。
下边启动 add-service-demo 容器,

这条命令和上一条差不多,只是增加了一个 --link 参数, --link 指定容器间的连接,命令格式 --link 容器名:别名 ,这里连接了之前创建的名为 service-registry-demo 的容器,这里的别名和 application-docker.yml 文件中配置的 defaultZone 一致。其实就是通过别名找到了对应的容器IP,进到容器里查看 hosts 文件就明白了,其实就是加了条hosts映射。
add-service-demo 容器启动成功之后,刷新配置中心的页面,发现已经注册到配置中心了。



  • docker鏈変粈涔堢敤
    绛旓細涓夈佺畝鍖栧紑鍙戝拰杩愮淮宸ヤ綔 Docker鎻愪緵浜嗚澶氬己澶х殑宸ュ叿鍜屽姛鑳斤紝绠鍖栦簡寮鍙戝拰杩愮淮鐨勫伐浣滄祦绋嬨傞氳繃Docker闀滃儚绠$悊锛屽彲浠ヨ交鏉惧湴鐗堟湰鎺у埗鍜屾洿鏂板簲鐢ㄧ▼搴忋備娇鐢―ocker Compose鍙互杞绘澗鍦扮鐞嗗拰缂栨帓澶氫釜瀹瑰櫒锛屽疄鐜寰湇鍔鏋舵瀯鐨閮ㄧ讲鍜岀鐞嗐傛澶栵紝Docker杩樻彁渚涗簡寮哄ぇ鐨勬棩蹇楀拰鐩戞帶鍔熻兘锛屽彲浠ュ府鍔╄繍缁翠汉鍛樻洿濂藉湴绠$悊鍜岀洃鎺у簲鐢...
  • docker鐨濂藉 docker鐨勫ソ澶勬槸浠涔
    绛旓細鏈夊緢澶氱悊鐢变綘闇瑕佸湪涓鍙版満鍣ㄤ笂杩愯澶氫釜搴旂敤锛岃繖灏遍渶瑕佸皢鍘熸潵閾佹澘涓鍧梞onolithic鐨勫簲鐢ㄥ垏鍒嗕负寰堝寰湇鍔銆傚疄鐜板簲鐢ㄤ箣闂寸殑瑙h︼紝灏嗗涓簲鐢ㄦ湇鍔閮ㄧ讲鍦ㄥ涓Docker涓鑳借交鏉捐揪鍒拌繖涓洰鐨勩5銆佹湇鍔″悎骞 浣跨敤Docker涔熻兘鍚堝苟澶氫釜鏈嶅姟浠ラ檷浣庤垂鐢紝涓嶅鐨勬搷浣滅郴缁熷唴瀛樺崰鐢紝璺ㄥ疄渚嬪叡浜涓┖闂茬殑鍐呭瓨锛岃繖浜涙妧鏈疍ocker鑳戒互...
  • 浠涔堟槸dock
    绛旓細Docker鐨搴旂敤鍦烘櫙 Docker骞挎硾搴旂敤浜庡紑鍙戙佹祴璇曞拰鐢熶骇鐜涓傚紑鍙戣呭彲浠ヤ娇鐢―ocker鍦ㄦ湰鍦扮幆澧冧腑鏋勫缓鍜屾祴璇曞簲鐢ㄧ▼搴忥紝鐒跺悗灏嗗鍣閮ㄧ讲鍒扮敓浜х幆澧冧腑锛岀‘淇濆簲鐢ㄧ▼搴忓湪鍚勭鐜涓殑琛屼负涓鑷淬傛澶栵紝Docker杩樺彲浠ョ敤浜庢瀯寤寰湇鍔鏋舵瀯锛岄氳繃灏嗗ぇ鍨嬪簲鐢ㄧ▼搴忔媶鍒嗕负澶氫釜灏忓瀷鏈嶅姟鏉ョ畝鍖栧簲鐢ㄧ鐞嗗拰鎵╁睍鎬с侱ocker鐨勫伐浣滃師鐞 Docker...
  • 浠涔堟槸docker
    绛旓細4. 绠$悊渚挎嵎锛欴ocker鎻愪緵浜嗗己澶х殑绠$悊宸ュ叿锛屽彲浠ユ柟渚垮湴鏋勫缓銆佹祴璇曘閮ㄧ讲鍜岀鐞嗗簲鐢ㄣDocker鐨搴旂敤鍦烘櫙 Docker骞挎硾搴旂敤浜嶹eb搴旂敤鐨勯儴缃层佹暟鎹簱绠$悊銆佹寔缁泦鎴/鎸佺画閮ㄧ讲娴佺▼銆寰湇鍔鏋舵瀯绛夐鍩熴傚畠鍙互甯姪浼佷笟瀹炵幇蹇熺殑鏈嶅姟閮ㄧ讲銆佹墿灞曞拰绠$悊锛屾彁楂樺紑鍙戙佹祴璇曞拰杩愮淮鐨勬晥鐜囥傛荤殑鏉ヨ锛孌ocker鏄竴绉嶅己澶х殑瀹瑰櫒鍖...
  • Docker+ Kubernetes宸叉垚涓轰簯璁$畻鐨勪富娴(浜屽崄鍏)
    绛旓細k8s鍍忛鏆翠竴鏍峰腑鍗蜂簡搴旂敤寮鍙戦鍩,骞朵笖宸叉垚涓轰簯鍘熺敓搴旂敤绋嬪簭(鏋舵瀯銆佺粍浠躲閮ㄧ讲鍜岀鐞嗘柟寮)鐨勪簨瀹炴爣鍑,澶ч噺鐨勫紑鍙戣呭拰浼佷笟姝e湪浣跨敤k8s鍒涘缓鐢寰湇鍔鍜屾棤鏈嶅姟鍣ㄥ姛鑳界粍鎴愮殑鐜颁唬鏋舵瀯銆 Docker+ Kubernetes宸叉垚涓轰簯璁$畻鐨勪富娴 瀹瑰櫒鏄幇浠h蒋浠朵氦浠樼殑鏈潵,鑰孠ubernetes鏄紪鎺掑鍣ㄧ殑鏈浣虫柟妗(浜嬪疄涓婄殑鏍囧噯)銆 Docker 鍜孠ubernetes鐩...
  • SpringCloud涓Docker寰湇鍔鏋舵瀯瀹炴垬PDF涓嬭浇
    绛旓細浣跨敤Spring Cloud鏋勫缓瀹為檯鐨勫井鏈嶅姟鏋舵瀯銆 鍩烘湰姒傚康: 浣跨敤Docker杩涜闆嗘垚娴嬭瘯 娣峰悎鎸佷箙鍖 寰湇鍔℃灦鏋 鏈嶅姟鍙戠幇 API缃戝叧 Docker 浣跨敤Docker瀵规瘡涓涓湇鍔¤繘琛屾瀯寤哄拰閮ㄧ讲銆備娇鐢―ocker Compose鍦ㄤ竴涓紑鍙戞満涓婅繘琛岀鍒扮鐨勯泦鎴愭祴璇曘
  • Serverless鏋舵瀯寰湇鍔鏋舵瀯鍒嗗竷寮忔灦鏋勫崟浣撴灦鏋勫洓绉嶈蒋浠舵灦鏋勮瑙鐧惧害...
    绛旓細鍗曚釜寰湇鍔鍚姩杈冨揩: 鍗曚釜寰湇鍔′唬鐮侀噺杈冨皯, 鎵浠ュ惎鍔ㄤ細姣旇緝蹇 灞閮ㄤ慨鏀瑰鏄閮ㄧ讲: 鍗曚綋搴旂敤鍙鏈変慨鏀,灏卞緱閲嶆柊閮ㄧ讲鏁翠釜搴旂敤,寰湇鍔¤В鍐充簡杩欐牱鐨勯棶棰樸 涓鑸潵璇,瀵规煇涓井鏈嶅姟杩涜淇敼,鍙渶瑕侀噸鏂伴儴缃茶繖涓湇鍔″嵆鍙 鎶鏈爤涓嶅彈闄:鍦ㄥ井鏈嶅姟鏋舵瀯涓,鍙互缁撳悎椤圭洰涓氬姟鍙婂洟闃熺殑鐗圭偣,鍚堢悊鍦伴夋嫨鎶鏈爤銆備緥濡傛煇浜涙湇鍔″彲浣跨敤...
  • docker搴旂敤鍦烘櫙鏄粈涔
    绛旓細4銆侀殧绂诲簲鐢 寮鍙戞椂浼氬湪涓涓彴鏈哄櫒涓婅繍琛屼笉鍚岀殑搴旂敤銆備竴锛屼负浜嗛檷浣庢垚鏈紝杩涜鏈嶅姟鍣ㄦ暣鍚 浜岋紝灏嗕竴涓暣浣撳紡鐨勫簲鐢ㄦ媶鍒嗘垚浣庤﹀悎鐨勫崟涓湇鍔★紙寰湇鍔鏋舵瀯锛5銆佹暣鍚堟湇鍔″櫒 姝e閫氳繃铏氭嫙鏈烘潵鏁村悎澶氫釜搴旂敤锛Docker闅旂搴旂敤鐨勮兘鍔涗娇寰桪ocker鍙互鏁村悎澶氫釜鏈嶅姟鍣ㄤ互闄嶄綆鎴愭湰銆傜敱浜庢病鏈夊涓搷浣滅郴缁熺殑鍐呭瓨鍗犵敤锛屼互鍙婅兘鍦...
  • 寰湇鍔鏋舵瀯鏄粈涔堟剰鎬?
    绛旓細鍏舵锛屽井鏈嶅姟鏋舵瀯閲囩敤浜嗕竴绉嶆澗鑰﹀悎鐨勬灦鏋勬ā寮忥紝鍗鍩轰簬API閫氫俊鐨勬柟寮忓疄鐜版湇鍔′箣闂寸殑浜や簰銆傝繖浣垮緱涓嶅悓鐨勫井鏈嶅姟涔嬮棿鍙互鐩稿鐙珛鍦拌繘琛屽紑鍙戝拰閮ㄧ讲锛屽悓鏃朵篃鍙互鐏垫椿鍦拌繘琛屾í鍚戞墿灞曞拰绾靛悜鎷嗗垎銆傚井鏈嶅姟鏋舵瀯鎻愬′娇鐢ㄨ交閲忕骇鐨勬妧鏈爤锛屽Docker銆並ubernetes绛夛紝鏉ュ疄鐜版湇鍔$殑蹇熼儴缃插拰鑷姩鍖栨不鐞嗐傝繖鏍疯兘澶熻繘涓姝ヤ紭鍖栧紑鍙戙...
  • docker缁撳悎澶ф暟鎹彲浠ュ仛浠涔
    绛旓細Docker 瀹瑰櫒鎶鏈篃鏄竴绉嶈櫄鎷熷寲鎶鏈紝鐩告瘮 KVM锛孷MWare 铏氭嫙鏈猴紝Docker 瀹炵幇浜嗕竴绉嶈交閲忕殑铏氭嫙鍖栨妧鏈紝鍏锋湁寰堝ソ鐨勬ц兘鍜屽畨鍏ㄦс鍩轰簬 Docker 鍙互瀹炵幇 CaaS锛圕ontainers as a Service锛寰湇鍔鏋舵瀯锛屼竴鑸竴涓簲鐢ㄧ▼搴忎細鎻愪緵澶氫釜鏈嶅姟锛屽寘鎷唴閮ㄦ湇鍔″拰澶栭儴鏈嶅姟锛屽皢鎵鏈夌殑鏈嶅姟鍗曠嫭鐢ㄥ鍣ㄥ寘瑁呰捣鏉ワ紝鍒嗗埆閮ㄧ讲鍜岃繍琛岋紝...
  • 扩展阅读:docker部署java微服务 ... docker打包部署流程 ... java微服务架构有哪些 ... docker私库 ... docker部署项目步骤 ... 停止docker服务 ... docker部署网站 ... docker部署springboot ... docker部署hadoop集群 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网