| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringBoot+Maven+Nacos搭建微服务应用 -> 正文阅读 |
|
[Java知识库]SpringBoot+Maven+Nacos搭建微服务应用 |
1、创建微服务应用 理解:和创建多模块应用一样,只不过此处的各种方法不再是通过“类库”进行调用,而是通过服务(controller或service) (1)按上图创建多模块项目(这块还没有深入理解,理论上应该不用这样创建,特别是对于一些公共的服务封装); (2)serviceProvider为服务提供者,serviceCustomers为服务使用者 (3)主框架pom.xml如下(要特别注意版本的匹配,即:spring-boot和cloud-alibaba的匹配。各版本的匹配官网地址是:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub):
serviceProvider和serviceCustomers的pom.xml继承了框架pom.xml内容,故:引入新增所需dependency就行,如下:
(4)创建和配置serviceProvider 在src/main/resources/下创建application.yml配置文件,配置内容为(server-addr可以是localhost或127.0.0.1):
创建一个controller,写好一个对外发布的服务(即:RequestMapping) (5)启动Nacos(怎么启动和配置,见上一篇内容),运行APP,正常运行后,应该可以看到Nacos已经成功注册服务: 如成功看到上图结果,那么就表示服务已经注册成功,可以被其它应用调用。 (6)从serviceCustomers中对服务进行调用 此处,使用了RestTemplate对服务进行请求,并返回结果。可以理解是一个封装了的工具类。详细细节:RestTemplate 用法详解_lzcWHUT的博客-CSDN博客_resttemplate 微服务的优点: (1)项目与项目之间(modul之间)可以完全没有依赖关系,通过nacos进行服务管理。极大程度实现了各模块之间的最低耦合(这一点前后端分离后也可以实现); (2)每一个项目都可以在nacos注册为服务提供者,供其他项目调用。那么,所有的部门、用户、角色,都可以通过调用主工程的controller实现。且由于是通过服务调用(不是引用jar的形式),主工程可以发布在任意服务器,子工程也可以发布在任意服务器,并实现调用(需要用到Feign,和跨域请求非常类似)。这与多模块程序不同的地方在于无需引用jar包,无需创建实例,直接调用服务(这一点通过分布式数据库+前后端分离也可以实现)。这样的好处在于:服务提供者更新后,子工程无需重启(一般情况下,MIS系统的服务提供者主要提供数据库的CRUD,返回的都是字符串,所以只要方法参数、名称不改变,服务调用者就不需要重新发布程序); (3)方便配置策略均衡(这一点通过负载均衡也可以实现,但在Nacos这里容易配置一点,目前没有发现更进一步的优势) 在之前的serviceCustomers中,增加红下划线代码,即可从Nacos中获取压力较小(访问量较少)的服务 本地多实例启动,在IDEA中从如下接口进行配置: 配置完毕后,先运行一次serviceProvider,然后修改serviceProvider/src/resouces/application.yml中的port,再运行一次,如果要继续多运行,可多次修改port端口后运行,这样,在Nacos管理平台中可以看到注册了同名的多个服务实例,如下: 点击详情可看到: 运行serviceCustomers,可以看到每次刷新都会从实例中选择压力最小的一个。即下面这行代码其的作用: 这在并发过高时,可以将接口发布至多台服务器,并通过前端调用进行负载分配,有利于快速实现负载均衡。在VS中,也可以通过全局变量自己写策略满足上述应用需求,此处通过ServiceInstance方便了许多。ServiceInstance类的详细介绍:服务实例(Service Instance)生命周期如何控制_weixin_30549657的博客-CSDN博客 上述几点优势也可通过即有技术进行解决,也许是理解尚未深入的原因。但微服务作为目前主流解决方案,一定存在其优势,特别是Nacos经过了多年双11的考验,在并发和性能方面应该有很多独具优势的地方。 官网主要介绍为(尚未深入了解): Sentinel – 提供流控、服务降级、熔断能力,为系统提供防护。 Nacos – 负责服务注册与发现,还有分布式配置。 RocketMQ – 用于实现事件驱动模式、消息总线,已经整合了 SpringCloud Stream。 Seata – 用于实现分布式事务。 Dubbo RPC – 使用 RPC 进行服务调用。 其它博文理解: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:39:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |