热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅谈微服务(一)

首先了解技术架构的演变过程,单体应用架构--垂直应用架构--分布式架构--SOA--微服务SOA与微服务SOA:面向服务架构优点:抽取公共的功

首先了解技术架构的演变过程,单体应用架构-->垂直应用架构-->分布式架构-->SOA-->微服务

SOA与微服务 

SOA:面向服务架构

优点:

  抽取公共的功能为服务,提高开发效率,对不同的服务进行集群化部署,解决系统压力。基于ESB/DUBBO减少系统耦合

缺点:

抽取服务的粒度大,服务提供方与服务调用方接口耦合度较高。

 那什么是微服务呢?

简而言之,微服务架构风格这种开发方式,是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量级的机制来互相通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。

从技术维度来理解:

微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库

微服务与微服务架构

微服务

   强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭义的看,可以看做IDEA中的一个个微服务工程,或者moudel.

微服务架构

  一种新的架构形式,由Martin Fowler于2014年提出。它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外应尽量避免统一的,集中的服务管理机制,对于具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储;

微服务的特点:

1.每个微服务可独立运行在自己的进程里

2.一系列独立运行的微服务共同构建起了整个系统

3.每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理,用户管理等。

4.微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。

微服务的优点:

       每个服务足够内聚,足够小,能聚焦一个指定业务功能。

       开发简单,开发效率提高,一个服务专一的只干一件事, 易于开发和维护。

      微服务是松耦合的,是具有功能意义的服务,无论是在开发阶段或部署阶段都是独立运行的,启动较快。

      技术栈不受限,微服务能使用不同的语言开发。

      局部修改容易部署

      易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如bamboo,Hudson

      微服务只是业务逻辑的代码,不会和html,css或其他界面混合

      每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库

    微服务带来的挑战

      运维要求较高(多服务运维难度,随着服务的增加,运维的压力也在增大)

      分布式的复杂性

      接口调整成本高

      系统部署依赖

      系统集成测试

       性能监控

微服务设计原则

       单一职责原则

       服务自治原则

       轻量级通信原则

       接口明确原则

微服务技术栈

微服务条目落地技术
服务开发SpringBoot,Spring,SpringMvc
服务配置与管理Netflix公司的Archaius ,阿里的Diamond等
服务注册与发现Eureka, Consul , Zookeeper等
服务调用Rest, RPC , gRPC
服务熔断器Hystrix, Envoy等
负载均衡Ribbon , Nginx等
服务接口调用(客户端调用服务的简化工具)Feign等
消息队列Kafka, RabbitMQ, ActiveMQ等
服务配置中心管理SpringCloudConfig, Chef等
服务路由(API网关)Zuul等
服务监控Zabbit, Nagios, Metrics, Specatator等
全链路追踪Zipkin, Brave, Dapper等
服务部署Docker,OpenStack,Kubernetes等
数据流操作开发包SpringCloud Stream(封装与redis,rabbit,Kafka等发送接收消息)
事件消息总线SpringCloud Bus

如有不同意见,欢迎留言指正。大家一起进步呦!!!


推荐阅读
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储模式
    代码已上传Github+Gitee,文末有地址  书接上文:前几回文章中,我们花了三天的时间简单了解了下接口文档Swagger框架,已经完全解放了我们的以前的Word说明文档,并且可以在线进行调 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • MVC中的自定义控件
    怎么样创建自定义控 ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
  • nginx 反向代理proxy参数讲解
    ![](http:i2.51cto.comimagesblog20180805c32a728954d93ee2a4e4fb59c150a15b.png?x-oss-processi ... [详细]
  • MVC就是model模型control控制view视图把web开发的分工明确各施其职,互不干涉在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相 ... [详细]
  • ASP.NET MVC 小牛之旅3:Routing——网址路由
    网址路由(Routing)在ASP.NETMVC中有两个主要用途,一个用途是匹配通过浏览器传来的HTTP请求,另一个用途则是响应适当的网址给浏览器。3.1匹配通过浏览器传来的HTT ... [详细]
author-avatar
lan1998_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有