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

新媒体管家

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

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

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

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

微服务

微服务是一种分布式系统架构,它建议我们将业务划分为更加细粒度的服务,并使每个服务的责任单一且可独立部署,服务内部高内聚,隐含内部细节,服务之间低耦合,彼此相互隔离。此外,我们根据面向服务的业务领域来建模,对外提供统一的 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 国内镜像来加块插件等的下载速度:

在 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 开发脚手架,可以直接搜索插件安装:

初始化 Spring Boot 应用:

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

正如书上所说:

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:

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

总结

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


原文发布于微信公众号 - coding01(coding01)

原文发表时间:2017-09-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Java软件工程师就业思维图(2016年版)

想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,在面试之前到底需要准备哪些东西呢?面试时面试官想了解你的什么专业技能,以下都是一个合格JAVA软件...

1684
来自专栏架构师小秘圈

实现微服务架构最流行Style,Spring Boot+Spring Cloud

我的学习是先从Spring boot开始的,然后接触到微服务架构,当然,这一切最大的启迪还是感谢我的一个老师,是他给我指明了新的道路,让我眼前一亮,再次感谢。

6005
来自专栏EAWorld

微服务架构实战:Swagger规范RESTful API

导读:本文是EAII微服务系列文章之一。随着微服务架构的流行,REST风格也是大势所趋。那么,什么是REST?如何规范我们的RESTFUL API 文档?本文中...

4639
来自专栏非著名程序员

Java开发者值得关注的7款新工具

云计算、大数据地快速发展催生了不少热门的应用及工具。作为老牌语言Java,其生态圈也出来了一些有关云服务、监控、文档分享方面的工具。本文总结了7款较新的Jav...

2185
来自专栏全华班

如何实现一个优质的微服务框架

摘要: 一个优质的微服务框架需要考虑的要素众多,在满足微服务设计理念的前提下,也是一个不断实践优化的过程。 本文讲述了整个 开源微服务框架 Apache Ser...

2194
来自专栏小勇DW3

《分布式服务架构:原理、设计于实战》总结

  互联网企业对传统技术进行发展和演化,形成一套具有互联网特色的互联网技术,互联网技术以拆分为原则来满足服务于海量 用户的需求,从架构上来讲,分布式、服务化( ...

1302
来自专栏java一日一条

我是如何成为一个JavaWeb开发者的

  你应该也知道所谓的“全栈”Java开发人员。这是个人的技能集合。一个完整的全栈开发者应该同样胜任前端开发和后端开发的工作。这可能是难度系数最高的一条路了,因...

1001
来自专栏全华班

认识工作流- What is Activiti?

阅读文本大概需要 5 分钟。 一、Activiti是什么? ? 我们前文中提到了工作流的概念。工作流是以任务的形式驱动人处理业务或者驱动业务系统...

6958
来自专栏网络

物联网设备网关技术架构设计

源小象文文刀1、前情概要 看这篇文章之前,强烈建议先阅读《物联网设备网关系统架构设计》,该篇文章从四个层次详细介绍了我司设备网关的系统架构。 其实做架构设计离不...

5367
来自专栏ThoughtWorks

TW洞见 | NoSQL数据库概览

关注“思特沃克ThoughtWorks”微信公众号,输入“洞见”或者“Insights”可以查看最新发布的洞见文章。 过去的五年,数据存储和管理领域一直出于混乱...

3574

扫码关注云+社区

领取腾讯云代金券