跟着《架构探险》学轻量级微服务架构 (一)

版权声明:叶梅树 https://blog.csdn.net/yemeishu6033022/article/details/81229909
6302-0972f23dec92b624.jpg
架构探险

微服务概念这两年已经火遍大江南了,但在实际的开发和使用中,用到的还是挺少的,尤其对创业团队来说。

在上一个产品中,我们也在把传统的开发模式,不断往「微服务」方向靠拢。但终究还是处于学习阶段。最近偶然发现有人推荐《架构探险 轻量级微服务架构》上下册这两本书,简单的看了看目录后,觉得使用到的技术,有些已经在开发过程中用到过,有些可能会在未来的某一阶段会使用到。

也本着「多看书,多学习」的原则,果断入手了这两本书。昨天到手后,用了一晚上的时间,粗略看完了第一本书,今天迫不及待的想按照书中的脉络和技术栈,边学习边动手,搭建简易的「轻量级微服务架构」。

预计分成好几篇读书摘要来分享读书心得

微服务

微服务是一种分布式系统架构,它建议我们将业务划分为更加细粒度的服务,并使每个服务的责任单一且可独立部署,服务内部高内聚,隐含内部细节,服务之间低耦合,彼此相互隔离。此外,我们根据面向服务的业务领域来建模,对外提供统一的 API 接口。微服务的思想不只是停留在开发阶段,它贯穿于设计、开发、测试、部署、运维等软件生命周期阶段。
引用于《架构探险》

优点

微服务满足以下几点要求:

· 根据业务模块划分服务种类;
· 每个服务可独立部署且相互隔离;
· 通过轻量级 API 调用服务;
· 服务需保证良好的高可用性。

引用于《架构探险》

当满足于微服务架构,所带来的好处无外乎以下几点:

1. 每个微服务组件都是简单灵活的,能够独立部署。不再像以前一样,应用需要一个庞大的应用服务器来支撑,而且前端、后台、数据库什么的都整合在一起;

2. 每个微服务组件,都可以由更小的团队,或者第三方平台来负责开发,或者提供,让所有人更专注专业,提供更高效可靠的服务。

3. 微服务之间是松耦合的,微服务内部是高内聚的,每个微服务都可以根据自身提供的服务进行有针对性的扩展。

4. 微服务架构与语言工具无关,自由选择合适的语言和工具,尤其对于小团队来说,如果其中一组 PHP 开发人员忙于其它业务开发,完全可以由另一组 Java 开发人员来开发。

微服务核心技术

这本书主要利用一些主流的开发框架和工具来搭建微服务架构:

1. 微服务开发框架 —— Spring Boot 框架
2. 微服务网关 —— Node.js
3. 微服务注册与发现 —— ZooKeeper
4. 微服务封装 —— Docker
5. 微服务部署 —— Jenkins, GitLab

写代码

微服务开发框架 —— Spring Boot 框架

关于开发 IDE,我是推荐 jetbrains (https://www.jetbrains.com/) 家族系列的,如 Java 使用 IntelliJ IDEA,如 前端开发使用 WebStorm, PHP 开发使用 PhPStorm 等。

在使用 IntelliJ IDEA 之前,我们需要加入 Maven 国内镜像来加块插件等的下载速度:

6302-6f5570e4ec8cbaa2.jpg

在 settings.xml 文件中加入阿里云镜像路径:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">

      <mirrors>
        <mirror>  
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <mirrorOf>central</mirrorOf>          
        </mirror>  
      </mirrors>
</settings>

在 IntelliJ IDEA 中如果没有 Spring Boot 开发脚手架,可以直接搜索插件安装:

6302-cb9ce6ebe3305e16.jpg

初始化 Spring Boot 应用:

6302-51889e7e26f485e7.jpg
6302-a305ff34a8896576.jpg
6302-a94c740b3b1beae5.jpg

项目的整个目录结构如下:

6302-358a3eadf7867119.jpg

正如书上所说:

1. 在类中带有 @SpringBootApplication,表明它是个 Spring Boot 应用;

2. 类中包含有 main()函数,通过 SpringApplication.run(Demo1Application.class, args);来运行该类。

3. 加入简单的一个 Hello 接口,直接上代码:

package com.yemeishu.demo1;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class Demo1Application {

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

    @RequestMapping(method = RequestMethod.GET, path = "/hello")
    public String hello () {
        return "你好 叶梅树";
    }
}

现在可以直接点「运行」了,输出一堆 Log:

6302-bc31a4a573fbf3c9.jpg

在浏览器输入网址:http://localhost:8080/hello,即可看到结果:

6302-6bc1d1c1a11b4e30.jpg

总结

可以看出 Spring Boot 还是比较容易上手的,接下来继续学习 Spring Boot 和微服务相关的功能开发。


明天继续,coding01 期待您继续关注

6302-631497fa92c6566b.jpeg
qrcode

也很感谢您能看到这了

6302-a9be12be9561d194.jpg
qrcode

猜你喜欢

转载自blog.csdn.net/yemeishu6033022/article/details/81229909