基于Spring Cloud的微服务入门教程
(本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!)
本人也是前段时间才开始接触Spring Boot、Spring Cloud,进而通过Spring Cloud才知道“微服务”这一概念。之后单位的一个项目使用了Spring Cloud来实现,现在想把如何使用Spring Cloud搭建一个简单的微服务框架写下来,方便以后查阅,同时本人也希望本教程能起到抛砖引玉的作用,欢迎各位大神一起讨论学习。
本入门教程会介绍微服务架构,然后使用Spring Boot、Spring Cloud框架搭建基于微服务架构的应用,这些应用能部署到公司的私有云或者诸如Amazon、Google等公有云。
什么是微服务
在微服务概念出现前,web应用程序大都采用一体化应用架构,即将所有功能模块都集中在一起,包括UI、业务逻辑、数据库操作逻辑等,然后打包成一个庞大的可部署的软件构件,如war包,最后部署到应用服务器上。这种架构有很多弊端。当有新的需求,应用程序就必须做出修改,然后测试、部署;当应用越来越庞大,维护成本越来越高,维护也越来越困难,最后只能重构整个应用,重构后,又是一个恶性循环。
“微服务”这个概念是2014年才逐渐进入开发者的视野。可以用一句话来概括微服务:微服务应用是由多个分布式的、松耦合的小应用聚合在一起,而这些小应用只实现了少量的定义明确的功能。换句话说,就是:搭建一个大型应用时,使用微服务架构能将这个应用分解成多个易于管理的、功能明确的小应用。这些小应用实现的功能都是从大应用中的特定功能抽取出来的,所以它们是完全独立的,不依赖于其它小应用,能够独立运行。而这些小应用之间的“交流”都是通过接口调用(同步)、消息队列(异步)等完成的。所以虽然大应用被拆分成小应用,但它们还是可以很好的协调合作,实现各种功能。
微服务架构有如下特征:
- 应用程序的逻辑被分解成多个功能明确的、具有明确责任边界的细粒度组件——微服务。
- 每个微服务都拥有自己独立的业务domain(可以理解为实体类);完全独立,不依赖于其它任何组件;能够被多个应用程序重用。
- 微服务之间的交流基于一些基本规则。服务提供者和服务消费者之间的数据交换采用轻量级通信协议,如:HTTP和JSON。
- 微服务底层的实现具有编程语言、平台无关性。因为微服务间的交流是基于“技术无关性协议”(technology-neutral protocol),最常见的是JSON。这意味着微服务应用可以使用多种语言、技术进行搭建。
为什么使用Spring Cloud搭建微服务应用
一体化应用架构有很多弊端,Spring开发团队发现有很多开发团队逐渐摒弃这种架构,转而向分布式应用方向研究。为应付这种转变,Spring开发团队启动了两个项目:Spring Boot和Spring Cloud。
Spring Boot是一个重新构想的Spring框架。Spring Boot基于Spring,但去掉了很多企业级的特性,并提供了一个基于Java、面向REST风格的微服务框架。使用一些简单的注解,就能搭建一个RESTful微服务应用,然后打包并部署,而且不需要应用程序容器(微服务中内置一个tomcat容器)。
微服务架构已成为目前搭建基于云的应用程序最流行的架构。为方便我们开发基于云的微服务应用,Spring开发社区启动了Spring Cloud项目。Spring Cloud框架使操作和发布微服务应用到私有或公有云变得更简便。Spring Cloud包装了多个主流的云管理方面的微服务框架,开发团队通过简单的注解就能将这些优秀的微服务框架整合到我们自己应用中来。这些微服务框架包括:Netflix Eureka(服务注册与发现)、Netflix Ribbon(客户端负载均衡)、Netflix Hysteria(熔断器)、Netflix Zuul(服务网关)、Spring Cloud Config(分布式配置)等。
以下为本教程的目录
教程的源码
https://gitee.com/rain7564/spring_microservices_study
注:
- 学习本教程需要一定的Spring Boot基础,若读者未接触或不熟悉,请下载根目录的“Spring Boot实战 ,丁雪丰 (译者).pdf”,然后自行学习。Spring Boot学深一点,搭建基于Spring Cloud的微服务云应用时不会太吃力。
- 本教程使用的IDE是idea,建议大家学习的时候也使用。
- 若使用idea,建议先配置好maven、git等。
基于Spring Cloud的微服务入门教程的更多相关文章
- 基于 Spring Cloud 的微服务架构实践指南(下)
show me the code and talk to me,做的出来更要说的明白 本文源码,请点击learnSpringCloud 我是布尔bl,你的支持是我分享的动力! 一.引入 上回 基于 S ...
- 干货|基于 Spring Cloud 的微服务落地
转自 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的 ...
- 基于Spring Cloud的微服务落地
微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务 ...
- 基于 Spring Cloud 的微服务架构实践指南(上)
show me the code and talk to me,做的出来更要说的明白 GitHub 项目learnSpringCloud同步收录 我是布尔bl,你的支持是我分享的动力! 一. 引入 上 ...
- spring Boot+spring Cloud实现微服务详细教程第二篇
上一篇文章已经说明了一下,关于spring boot创建maven项目的简单步骤,相信很多熟悉Maven+Eclipse作为开发常用工具的朋友们都一目了然,这篇文章主要讲解一下,构建spring bo ...
- spring Boot+spring Cloud实现微服务详细教程第一篇
前些天项目组的大佬跟我聊,说项目组想从之前的架构上剥离出来公用的模块做微服务的开发,恰好去年的5/6月份在上家公司学习了国内开源的dubbo+zookeeper实现的微服务的架构.自己平时对微服务的设 ...
- Spring Cloud实战微服务入门
1.spring cloud是什么? 是一个快速构建分布式系统的工具集,构建于Spring Boot之上 2.spring cloud 的特点 约定优于配置 开箱即用.快速启动 适用于各种环境 轻量级 ...
- 画了一张基于Spring Cloud的微服务系统架构图
- Spring Cloud Alibaba微服务架构入门最容易理解篇
微服务架构介绍 Spring Cloud Alibaba推荐的微服务生态架构基于分层架构实现如下: 接入层:最外层为LVS+Keepalived,可承受几十万级高并发流量洪峰,然后再通过内层的ngin ...
随机推荐
- Nginx入门【转】
原文地址:http://blog.csdn.net/u012486840/article/details/53098890 1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上 ...
- mybatis中批量更新的问题
问题:使用mybatis在执批量更新操作时,一直报错执行失败 解决方法: 首先打印了SQL语句,发现SQL语句拿出来执行没问题,也可以批量执行.SQL没问题,应该是配置的问题. 在网上查询和很多资料, ...
- Balanced Ternary String CodeForces - 1102D (贪心+思维)
You are given a string ss consisting of exactly nn characters, and each character is either '0', '1' ...
- 软件工程-pair work[附加题]
首先,在分组之前,我和室友周敏轩已经详细阅读了往届学长的博客,认为电梯调度这个项目应该先做UI会比较好一点,于是动手展开了UI的编写;但分组结果并没有如我们所愿,但我们依然共同进行了UI的编写,希望在 ...
- shell脚本--文件包含
首先介绍一下shell中包含文件的方法,在C,C++,PHP中都是用include来包含文件,Go和Java使用import来包含(导入)包,而在shell中,很简单,只需要一个点“.”,然后跟着文件 ...
- Ubuntu 服务器指南
https://help.ubuntu.com/lts/serverguide/ Jabber Instant Messaging Server https://help.ubuntu.com/l ...
- JMX configuration for Tomcat
Window下执行步骤: D:\apache-tomcat-7.0.57\bin\catalina.bat set CATALINA_OPTS=-Dcom.sun.management.jmxremo ...
- Mysql 5.7.21 单机多实例安装
下载MySQL 5.7 二制包 [root@MySQL ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linu ...
- SQLSERVER最简单的同名数据库恢复过程.
一. 冷备份恢复 1. net stop mssqlserver # 如果是安装的默认数据库实例 关闭 sqlserver的数据库 2. copy sqlserver的数据文件 主要是mdf 数据文件 ...
- git常用命令及用法小计
git init 初始化一个本地git仓库repository git status 查看状态 git add <file> 将工作区修改加到暂存区(stage) git commit - ...