SpringCloud_微服务概述

一:什么是微服务

1、马丁福勒博客:https://martinfowler.com/articles/microservices.html

2、用来描述将软件应用程序设计为独立可部署服务套件的特定方法。虽然这种体系结构风格没有精确的定义,但是围绕着业务能力、自动部署、端点中的智能以及语言和数据的分散控制,围绕着组织有一些共同的特征

3、简而言之架构风格是一种将单个应用程序开发为一组小服务的方法,每个服务运行在自己的流程中,并且与轻量级机制(通常是HTTP资源API)通信。这些服务是围绕业务能力建立的,并且可以由完全自动化的部署机器独立部署。这些服务的集中管理只有最低限度,可以用不同的编程语言编写并使用不同的数据存储技术。

单个应用程序开发为一组小服务的方法

服务的集中管理只有最低限度

1、从技术角度理解

1、微服务就是将传统的一站式项目应用,来根据业务进行拆分成一个一个的服务,从而彻底的去掉耦合

2、那么每个微服务提供了单个业务功能的服务,说白就是一个服务一个事件

也就一个独立的处理过程,类似进程的概念,能够独立运行和销毁,甚至拥有自己的数据库

3、如下单就是下单,支付就是支付

二:微服务与微服务架构

1、微服务:

1、强调的是服务的大小,关注的是某一个点,具体解决某个一个问题/落地的对应服务的一个服务应用.

2、如同医院中的眼科只做眼科的事,化验科只做化验科的事,换句话说,专业的事交给专业的来做

2、微服务架构:

1、微服务架构是一种架构模式,他提倡将单位一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.

2、每个服务运行在一个独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API的风格)。

3、每个服务都是围绕着具体业务进行构建,并且能够被独立的部署到生成环境、类生产环境等。

4、另外应当尽量避免统一的集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建。

5、换句话说,比如医院中眼科/化验科/等就一个小的服务,而对外提供一个大的服务就是医院

二:微服务优点与缺点

1、优点

1、每个服务足够内聚,够小,代码容易理解这样能够明确的指定一个业务功能或者是业务需求

2、一个微服务开发简单,开发效率高,因为一个微服务就是专一的只做一个事情

3、能够被小团队进行独立的开发

4、微服务是松偶合的,是有功能意义的服务,无论是开发阶段或者是在部署阶段都是独立的。

5、微服务可以使用不同的语言进行开发。

6、容易与第三方的技术进行集成,允许容易灵活的方式集成自动部署,通过持续集成工具进行集成如Jenkins Hudson 等...

7、微服务容易让开发人员理解,修改访问维护

8、微服务允许利用融合新的技术

9、微服务只专注业务逻辑的代码,不会和HTML/CSS等前台技术以及组件混合

如平常开发中的两种模式:

一种模式:

前后的分离模式

程序员只是专注后端的代码,和前端工程师安装约定的Rest地址+输入的参数格式+输出的参数格式、如$.post(rest,jsonDate,callBack)

二种模式:

全栈开发

H5+CSS+JAVAEE.....

10、每个微服务都有直接的存储的能力,可以拥有自己的数据库,也可以用拥有同一个数据库

2、缺点

1、开发人员要处理分布式系统的复杂性

2、多服务运维难度加大

3、系统部署依懒

4、服务器之间的通信成本加大

5、数据的一致性

6、系统的集成测试难度加大

7、性能的监控难度加大

三:微服务技术栈

1、就是多种技术的集合体

1、之前分布式架构使用的技术服务

1、服务治理(如阿里巴巴的Dubbo)

2、服务的注册(如Apache_ZooKeeper)

3、服务的调用

4、服务的负载均衡_(Jenkins)

5、服务的监控

.........

6、如都是不同的公司的不同的技术

那么可不可以使用同一家个公司的技术来完成?可以使用SpringCloud

2、微服务技术

四:微为什么选择SpringCloud作为微服务技术架构

1、选择依据

1、整体解决方法和框架的熟悉度

2、社区的热度

3、可维护性

4、学习的路线

2、目前公司微服务技术架构

1、阿里的Dubbo/HSF(分部式高速框架可理解二代Dubbo)俗称:好舒服

2、京东的JSF俗称:惊舒服

3、新浪微博Motan俗称:茅台

4、当当网Dubbox

3、各各微服务技术的对比

筛选微服务的条件

1、看看是否满足微服务

2、如何满足(是否可以自理更生)

3、借用第三方的技术

你可能感兴趣的:(java,数据库,运维)