SpringCloud

SCA中文文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

SCA源码下载:https://github.com/alibaba/spring-cloud-alibaba

转载于:https://my.oschina.net/monroe/blog/3100791

1.架构的演变

单体应用架构

所有功能都集中在一个应用中,项目模块紧密耦合

垂直应用架构

把之前的单体应用拆分成多个应用,以提升效率,比如电商系统可以拆分成:

电商系统,后台系统,CMS系统

优点:项目拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平拓展,同时不同的系统之间不会互相影响,提高容错率

缺点:系统之间互相存在,无法进行相互调用,系统之间互相独立,会造成一部分功能的冗余

分布式架构

冗余部分独立抽取出来做成业务层单独处理

优点:提高代码复用率

缺点:耦合度变高,调用关系复杂,难以维护

SOA架构

用治理中心SOA解决水平拓展,负载均衡,资源调度和治理

优点:解决了服务间调用关系的自动调节

缺点:服务间会有依赖关系,一旦某个环节出错会影响较大(服务雪崩),服务关系复杂,运维,测试部署困难

微服务架构

更加强调服务的彻底拆分,目的就是提高效率,微服务架构中,每个服务必须独立部署同时互不影响,微服务架构更加轻巧,轻量级

优点:服务原子化拆分,独立打包,部署和升级,保证每个微服务清晰的任务划分,利于拓展

缺点:分布式系统开发的技术成本高(容错,分布式事务等),复杂性更高,每个微服务进行分布式独立部署,当进行模块调用的时候,分布式会变的更加麻烦

2.Nacos

服务注册 配置管理

下载安装

官方文档:https://nacos.io/zh-cn/

下载地址:https://github.com/alibaba/nacos/releases

  • 启动 (E:\Nacos\nacos-server-2.1.1\nacos\bin)

    linux:

    sh startup.sh -m standalone

    windows

    startup.cmd -m standalone

  • http://localhost:8848/nacos

    账户名密码 nacos/nacos

服务提供者注册

https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery

父项目pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.13.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zyl</groupId>
    <artifactId>SpringCloudAlibabaZYL</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>SpringCloudAlibabaZYL</name>
    <description>SpringCloudAlibabaZYL</description>
    <packaging>pom</packaging>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <modules>
        <module>cloudAlibaba-Nacos</module>
    </modules>
</project>

子项目pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>com.zyl</groupId>
      <artifactId>SpringCloudAlibabaZYL</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <artifactId>cloudAlibaba-Nacos</artifactId>
   <version>1.0.0-SNAPSHOT</version>

   <name>cloudAlibaba-Nacos</name>
   <description>cloudAlibaba-Nacos</description>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>
   </dependencies>


</project>

application.properties

server.port=9001
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*

Main类

@SpringBootApplication
@EnableDiscoveryClient
public class CloudAlibabaNacosApplication {

   public static void main(String[] args) {
      SpringApplication.run(CloudAlibabaNacosApplication.class, args);
   }

   @RestController
   public class EchoController {
      @GetMapping(value = "/echo/{string}")
      public String echo(@PathVariable String string) {
         return "Hello Nacos Discovery " + string;
      }
   }
}

服务消费者注册

posted @   Acaak  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示