深入理解SpringCloud读书笔记(一)

SpringCloud的优点:
微服务单元按照业务来划分:将一个大的业务拆分为比较小的业务。按照业务划分的微服务单元独立部署。
微服务通过HTTP来互相通信:使用HTTP模式请求处理业务逻辑非常高效。服务和服务之间也可以通过轻量级的消息中线来通信,比如RabitMQ,Kafaka等。
微服务的数据库独立:不同的服务之间数据库相互独立,可以选择不同类型的数据库。
微服务自动化部署:可以使用Docker容器技术以及自动化部署工具Jenkins等来实现自动部署。
服务集中管理:服务数量比较多,所以需要集中管理,Spring Cloud使用Eureka来注册服务和发现服务,Zookeepr,Consul等都是非常优秀的集中化管理管理框架。
分布式架构:分布式系统比单体系统更加复杂,主要体现在服务的独立性和相互调用的可靠性,以及分布式事务的全局锁,全局Id等。
熔断机制:为了防止某个服务不可用之后造成整个系统的阻塞,SpringCloud会使用熔断器去做熔断。

总结,SpringCloud微服务具备以下特点。
服务的注册与发现(Eureka)
服务提供者将自己的服务信息告知服务注册中心,服务综测中心会提供服务的健康检查方案。
服务的负载均衡(Hystrix)
同一种类型的服务有多个实例时,注册中心会提供负载均衡策略。
服务的容错(Ribbon)
当某个服务不可用时会使用熔断机制,保证不会因为这个服务导致整个应用崩溃。
服务网关(Zuul)
API接口资源通常是由服务网关统一暴漏,内部服务不直接对外提供API资源的暴漏。还要负责安全验证。网关还可以实现监控功能,日志输出,以及流量监控,在高流量的情况下,对服务进行降级。常用的网关服务有Zuul,Nginx等。
服务配置的统一管理
spring cloud的config组件用来做统一的配置管理。
链路追踪
Google的Dapper,阿里的Eagleeye(鹰眼)等都是非常优秀的链路追踪开源组件。
实时日志

Dubbo
Dubbo是阿里的分布式开源框架。
RPC远程调用:封装了长连接NIO框架,如Netty等。
集群容错:提供了基于接口方法的远程调用功能,并且实现了负载均衡。
服务发现:集成了Zookeeper组件,用于服务的注册和发现。

在这里插入图片描述
Maven
Maven是一个项目管理工具,是基于工程对象模型(Pom)概念设计的,可以管理项目的整个生命周期,包括清理(clean),编译(Compile),打包(Package),测试(Test)等环节。
Maven的工作过程:
1 )首先读取pom文件,pom文件时Maven的核心,所有项目的依赖,插件都在pom文件进行统一管理。
2)下载jar到本地仓库。
3)执行构建的生命周期。
4)执行构建的插件。

pom文件解析:

<?xml version="1.0" encoding="UTF-8"?>                 //制定了xml文件的版本和编码方式。
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>                 //model version制定了pom的版本。

    <groupId>com.forezp</groupId>
    <artifactId>sc-f-chapter1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
  //groupId,artifactId,version三个标签可以唯一确定一个jar包,groupId代表了工资组织名称,artifactId为全局唯一Id,version代表版本。
    <name>sc-f-chapter1</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/>
    </parent>

    <modules>
        <module>eureka-server</module>
        <module>service-hi</module>
    </modules>
  //parent 用于指定父pom。
  //properties 用于生命一些常量。
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>
    //build为构建标签,他可以包含plugins插件标签,plugins里面可以包含若干个plugin。
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

mvn clean:删除工程target目录下的所有文件
mvn package:将工程打包
mvn compile:编译工程
mvn package:将工程打包并安装到本地仓库。

猜你喜欢

转载自blog.csdn.net/bianhao92115/article/details/86607488
今日推荐