Micro service
贾诩是也
走过很多弯路,一直坚强、执着的眺望着远方、、、一个听着小米布斯故事成长起来的老码农。不忘初心,方得始终、、、给自己鼓劲加油,为这个时代华丽的时代喝彩!
展开
-
使用微服务架构改造遗留系统
背景与挑战 随着公司国际化战略的推行以及本土业务的高速发展、《网络借贷信息中介机构业务活动管理暂行办法》的发布,各网贷平台都面临业务转型和运营合规问题,接入银行资金存管系统,就是网贷平台必须满足的合规条件。然而,后台支撑系统、前台PC网站、手机APP、M站已经不堪重负,在吞吐量、稳定性以及可扩展性上都无法满足日益增长的业务需求。一方面系统架构过于陈旧,性能、可靠性无法满足现有的需求原创 2018-03-05 04:26:23 · 517 阅读 · 0 评论 -
远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
RPC(Remote Procedure Call Protocol)RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成“classname.methodname”形式。优点是跨语言跨平台,C端、S端有更大的独立性,缺点是不支持对象,无法在编译器检查错误,只能在运行期检查。 Web ServiceWeb Ser转载 2018-03-07 17:20:57 · 269 阅读 · 0 评论 -
观察者模式和发布/订阅模式的区别
在事件总线(EventBus)的架构设计中,用到了发布/订阅模式,但发现和观察者模式挺接近,有时容易发生混淆,现试图分清一下他们的关系。 观察者模式的角色为观察者(observer)和主题(subject)对象,observer需要观察subject时,需先到subject里面进行注册(subject对象持有observer对象的集合句柄),然后,当subject对象的内原创 2018-03-06 18:48:07 · 624 阅读 · 1 评论 -
IO模型
目录前言IO模型网络编程模型参考资料前言说到IO模型,都会牵扯到同步、异步、阻塞、非阻塞这几个词。从词的表面上看,很多人都觉得很容易理解。但是细细一想,却总会发现有点摸不着头脑。自己也曾被这几个词弄的迷迷糊糊的,每次看相关资料弄明白了,然后很快又给搞混了。经历过这么几次之后,发现这东西必须得有所总结提炼才不至于再次混为一谈。尤其是最近看到好几篇讲这个的文章,很多都有谬误,很容易把本转载 2018-03-06 18:47:39 · 163 阅读 · 0 评论 -
微服务,ApiGateway 与 Kong
一. 微服务二. Api Gateway三. Kong 的使用 一. 微服务 对于一些传统的 大型项目,传统的方式会有一些缺陷,比如说 新人熟悉系统成本高(因为整个系统作为一个整体,彼此会有一定的牵连),项目重启时间长,重构困难(对于一个新技术的引入,可能需要对整个项目推到重来),不易于更换新的技术,并且整个项目会慢慢变成巨无霸。 所以说就会转载 2018-03-06 18:47:20 · 3262 阅读 · 0 评论 -
实施微服务,我们需要哪些基础框架?
[-]服务注册发现负载均衡和健康检查Facebook的项目开发流程和工程师绩效管理机制今日头条服务化探索及实践历程云端基于Docker微服务应用的架构实践Intel如何优化Spark应用的性能滴滴出行iOS客户端架构演进之路服务前端路由服务容错服务框架运行期配置管理Netflix的微服务框架 微服务(MicroServices)架构是当前互联网业界的转载 2018-03-06 18:46:56 · 2031 阅读 · 0 评论 -
微服务开发的12项要素
spring cloud官方文档提到的服务开发的12项要素。 I. Codebase从一个代码库部署到多个环境。II. Dependencies使用显式的声明隔离依赖,即模块单独运行,并可以显式管理依赖。III. Config在系统外部存储配置信息。IV. Backing Services把支持性服务看做是资源,支持性服务包括数据库、消息队列、缓冲服务器等。V.翻译 2018-03-06 18:46:19 · 250 阅读 · 0 评论 -
杂谈,微服务API Gateway
让我们想象一下你正在建立一个使用微服务模式的网上商店,你所用的产品详细信息页面。你需要开发多个版本的产品详情界面: l 由服务器端Web应用程序生成的HTML - HTML5/ JavaScript的桌面和移动浏览器用户界面。 l 原生Android和iPhone客户端 - 这些客户端通过的REST API服务器交互。此外,网上商店必须通过使用由第三方应用REST API公开的翻译 2018-03-06 18:45:18 · 285 阅读 · 0 评论 -
微服务分布式事务的一些思考
关于微服务分布式事务的一些思考,笔者没有参与过复杂分布式事务的场景,各位大神路过可以分享一些遇到的案例,大家一起探讨。 关于分布式事务,笔者推荐的处理方法是“尽量避免”,如果实在避免不了(这已经是高并发、用户量比较多的网站了)则使用“最终一致性”处理(参照CAP理论base思想),如果处理了事务,但还是遇到了数据错误,那还有最后一道保障,那就是“日志”,可以通过日志找回数据,其实大部分互联网原创 2018-03-06 18:43:50 · 195 阅读 · 0 评论 -
一句话概括下spring框架及spring cloud框架主要组件
spring 顶级项目:Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作了。Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。Sp翻译 2018-03-07 17:21:00 · 186 阅读 · 0 评论 -
微服务之微服务架构的优势与不足(一)
构建单体应用假设我们要开发一款全新的与 Uber 和 Hailo 竞争的打车软件。在前期的会议和需求整理后,你要么需要手动创建一个新项目,要么可以使用 Rails、Spring Boot、Play 或者 Maven 来生成。这个新应用可能采用了六边形架构模块,如下图所示:应用的核心是商业逻辑,它由定义服务、域对象和事件各模块来完成。各种适配器围绕核心与外部交互。适配器包括数据库访问组件、生成和 c...翻译 2017-08-03 09:41:39 · 6295 阅读 · 1 评论 -
无状态服务(stateless service)(续)
数据服务,正如其名,可以向应用提供数据存储与访问的服务。比如一个游戏场景服务器,可以在玩家进入的时候,向数据服务请求该玩家的数据。逻辑中处理不同玩家的数据交互,修改不同玩家的数据,然后以一定策略再将数据存回数据服务。同理如一个web应用服务器, client 发一个请求,应用向数据服务请求数据,修改数据,应用向数据服务存回数据。换言之,如果把服务端看作一个整体,数据服务维护的是clie转载 2018-03-05 04:25:58 · 3845 阅读 · 1 评论 -
微服务之springcloud技术栈
一、微服务架构图:二、技术介绍:(技术选型随着代码的编写会完成)关于技术选型,我盗了一张微服务技术栈的图,如下:原文:http://www.jianshu.com/p/2da6becfb019 我将会用到上图中的如下技术服务注册和服务发现:consul服务健康检查:consul配置管理:consul、archaius集群容错:hystrix计数监控:codahale-m原创 2018-03-05 04:25:35 · 7055 阅读 · 0 评论 -
微服务架构的进程间通信(IPC)
先抛出几个问题:微服务架构的交互模式有哪些?微服务常用的进程间通信技术有哪些?如何处理部分请求失败?API的定义需要注意的事项有哪些微服务的通信机制与SOA的通信机制之间的关系与区别微服务架构的交互模式一对一还是一对多?一对一:每个客户端请求有一个服务实例来响应一对多:每个客户端请求有多个服务实例来响应同步还是异步?同步模式:客户端请求需要服转载 2018-03-05 04:23:37 · 1142 阅读 · 0 评论 -
六种微服务架构的设计模式
聚合器微服务设计模式这是一种最常用也最简单的设计模式,如下图所示:聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可以沿X轴和翻译 2018-03-05 04:23:19 · 771 阅读 · 0 评论 -
分布式系统理论基础 - CAP
引言CAP是分布式系统、特别是分布式存储领域中被讨论最多的理论,“什么是CAP定理?”在Quora 分布式系统分类下排名 FAQ 的 No.1。CAP在程序员中也有较广的普及,它不仅仅是“C、A、P不能同时满足,最多只能3选2”,以下尝试综合各方观点,从发展历史、工程实践等角度讲述CAP理论。希望大家透过本文对CAP理论有更多地了解和认识。CAP定理CAP由Eric Brewer在20转载 2018-03-05 04:22:56 · 202 阅读 · 0 评论 -
初识微服务
WHAT - 什么是微服务微服务简介先来看看传统的web开发方式,通过对比比较容易理解什么是Microservice Architecture。和Microservice相对应的,这种方式一般被称为Monolithic(比较难传神的翻译)。所有的功能打包在一个 WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DA翻译 2018-03-05 04:22:37 · 280 阅读 · 0 评论 -
无状态服务(stateless service)
一、定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息 有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的 二、优劣 有状态服务常常用于实现事务(并不是唯一办转载 2018-03-05 04:22:06 · 4302 阅读 · 0 评论 -
服务注册与发现
背景使用服务的客户端可以采取客户端发现(Client-side discovery)和服务端发现(Server-side discovery)两种方式进行服务的发现,那么我们如何做到这些呢? 考虑因素一个服务的每个实例公开一个远程接口如HTTP/ REST、Thrift等。服务实例数量和它们的位置是动态变化的。如:虚拟机和容器通常分配动态IP地址,一个EC2自动缩放集群可以调整基于负载实例的数量。...转载 2018-03-06 18:45:55 · 411 阅读 · 0 评论 -
微服务框架的存储架构
web应用从单点向高并发架构演变时往往遇到最大的问题就是数据库的分布式存储。因为web应用本身就可以集群部署,但其所使用的数据库确是单点的。如果一个web应用开始的时候没有考虑数据库的分布式架构,那么等到要进行数据库集群改造时会发现困难重重,此时通常的做法是将原系统拆分成多个子系统,然后每个子系统访问一个数据库,这几乎重写了整个系统(如果这还不能满足需求,大型企业接下来会增加数据存储总线)。很多厂转载 2018-03-06 18:43:20 · 657 阅读 · 0 评论 -
轻量级微服务框架的通信架构
关于微服务通信基础知识可先行参考文章:中文连接:http://dockone.io/article/549英文连接:https://www.nginx.com/blog/building-microservices-inter-process-communication/接口调用如果是远程调用,那么就构成了简单的分布式。最简单的远程接口实现方式是web service或rest。当然一转载 2018-03-06 18:24:05 · 536 阅读 · 0 评论 -
docker网络配置方法总结
Docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址。docker0只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥,它可以使容器和主机相互通信,容器与容器间通信。问题是,如何让位于不同主机上的docker容器可以通信。如何有效配置docker网络目前来说还是一个较复杂的转载 2017-07-09 08:06:41 · 1032 阅读 · 0 评论 -
微服务(Microservice)追记
WHAT - 什么是微服务微服务的流行,Martin功不可没,这老头也是个奇人,特别擅长抽象归纳和制造概念,我觉的这就是最牛逼的markting啊,感觉这也是目前国人欠缺的能力。 Martin Fowler是国际著名的OO专家,敏捷开发方法的创始人之一,现为ThoughtWorks公司的首席科学家.福勒(Martin Fowler),在面向对象分析设计、UML、模式、软件开发方法学转载 2017-08-03 09:12:26 · 365 阅读 · 0 评论 -
手动为docker配置固定ip
Docker默认使用bridge模式,通过网桥连接到宿主机,而容器内部的ip则从网桥所在的ip段取未用的ip。这样做一个不方便的地方在于容器内部的ip不是固定的,想要连接容器时只能通过映射到宿主机的端口,因而有很多项目使用overlay来为docker提供网络的配置,比如Pipework、Flannel、Kubernetes、Weave、opencontrail等。想要使用overlay来转载 2017-07-18 00:29:32 · 486 阅读 · 0 评论 -
Kubernetes系统架构简介
1. 前言Together we will ensure that Kubernetes is a strong and openContainer management framework for any application and in any environment, whether in a private, public or hybrid cloud.转载 2017-07-18 00:34:48 · 353 阅读 · 0 评论 -
docker存储结构解析
由于aufs并未并入内核,故而目前只有Ubuntu系统上能够使用aufs作为docker的存储引擎,而其他系统上使用lvm thin provisioning(overlayfs是一个和aufs类似的union filesystem,未来有可能进入内核,但目前还没有;Lvm snapshot are useful for doing e.g. backup of a snapshot, but翻译 2017-07-08 13:52:41 · 246 阅读 · 0 评论 -
基于Docker开发的PaaS平台 DINP
DINP是又一个基于Docker开发的PaaS平台。DINP 包含如下组件:dinp-server master组件,控制集群中所有计算节点dinp-agent Agent,部署在所有计算节点,收集各个节点运行状态和container列表dinp-builder 编配平台,负责把用户代码打包为Docker imagedinp-dash Dashboard,用转载 2016-11-02 21:52:27 · 958 阅读 · 0 评论 -
Docker 学习笔记
一、Docker 简介Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 -- Docker HubDocker 使用客户端-服务器 (C/S) 架构模式。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建转载 2016-10-29 23:56:15 · 438 阅读 · 0 评论 -
深入学习微框架:Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。多年以来,Spring IO平台饱受非议的一点就是大量的XML配置转载 2016-10-30 11:31:43 · 593 阅读 · 0 评论 -
Spring Cloud实战(二)-Spring Cloud Eureka
概要什么是Spring Cloud Eureka?使用Eureka获取服务调用Eureka整合Spring Config Server构建Eureka Server集群什么是Spring Cloud Eureka?Spring Cloud Eureka 模块提供的功能是被动式的服务发现.什么是服务发现?服务发现就像聊天室一个,每个用户翻译 2016-10-31 09:59:08 · 339 阅读 · 0 评论 -
众说微服务(MSOA)~
微服务是SOA的升级版,做到更细的粒度,处理了更多的问题。例如现在的微服务都会侧重解决:服务发现、负载均衡、服务高可用、分布式请求日志跟踪回答这个问题就像php和java谁更优秀一样,官方有说soa的拆分粒度一定比微服务大?官方有说soa一定要用webservice?官方有说soa只能用在企业服务微服务只用在互联网?官方有说soa一定要使用esb?soa就不能高可用,不能分布式,不原创 2017-08-03 09:35:56 · 924 阅读 · 0 评论 -
SOA与MSOA
背景最近阅读了 Martin Fowler 和 James Lewis 合著的一篇文章 Microservices, 文中主要描述和探讨了最近流行起来的一种服务架构模式——微服务,和我最近几年工作的实践比较相关感觉深受启发。本文吸收了部分原文观点,结合自身实践经验来探讨下服务架构模式的演化。面向服务架构(SOA)面向服务架构 SOA 思想概念的提出已不是什么新鲜事,大概在10年转载 2017-08-03 09:38:51 · 991 阅读 · 0 评论 -
众说spring cloud和dubbo、、、
从项目的背景来看,Dubbo 国内用的公司挺多,国内影响力大,Spring Cloud 自然在国外影响力较大,所以这个来看不分伯仲了,毕竟都有大公司在使用。从社区的活跃度来看,可以看下各自的Github托管项目来区分,Dubbo · GitHub 与 Spring Cloud · GitHub ,从更新频率与更新时间来看 Spring Cloud 优于Dubbo,Dubbo基本不维护了。从框架的完原创 2016-11-02 11:11:01 · 1536 阅读 · 0 评论 -
Kubernetes系统架构简介
Kubernetes作为Docker生态圈中重要一员,是Google多年大规模容器管理技术的开源版本,是产线实践经验的最佳表现[G1] 。如Urs Hölzle所说,无论是公有云还是私有云甚至混合云,Kubernetes将作为一个为任何应用,任何环境的容器管理框架无处不在。正因为如此, 目前受到各大巨头及初创公司的青睐,如Microsoft、VMWare、Red Hat、CoreOS、Meso转载 2017-07-09 08:06:55 · 626 阅读 · 0 评论 -
微服务之使用 API 网关构建微服务(二)
简要概述让我们想象一下,你要为一个购物应用程序开发一个原生移动客户端。你很可能需要实现一个产品详情页面,展示任何指定商品的信息。下图展示了 Amazon Android 应用在商品详情页显示的内容。 即使只是个智能手机应用,产品详情页面也显示了大量的信息。该页面不仅包含基本的产品信息(如名称、描述、价格),而且还显示了如下内容:购物车中的商品数量历史订单客户评论翻译 2017-08-03 09:43:08 · 1391 阅读 · 0 评论 -
微服务之微服务架构中的进程间通信(三)
简介在单体应用中,各模块之间的调用是通过编程语言级别的方法或者函数来实现的。而基于微服务的分布式应用是运行在多台机器上的;一般来说,每个服务实例都是一个进程。因此,如下图所示,服务之间的交互必须通过进程间通信(IPC)来实现。后面我们将会详细介绍 IPC 技术,现在我们先来看下设计相关的问题。交付模式当为某个服务选择 IPC 时,首先需要考虑服务之间的交互问题。客户端和服务翻译 2017-08-03 09:43:58 · 5265 阅读 · 1 评论 -
微服务之服务发现的可行方案以及实践案例(四)
为什么要使用服务发现?假设我们写的代码会调用 REST API 或者 Thrift API 的服务。为了完成一次请求,代码需要知道服务实例的网络位置(IP 地址和端口)。运行在物理硬件上的传统应用中,服务实例的网络位置是相对固定的;代码能从一个偶尔更新的配置文件中读取网络位置。对于基于云端的、现代化的微服务应用而言,这却是一大难题,正如下图所示。服务实例的网络位置都是动态分配的。由翻译 2017-08-03 09:50:42 · 341 阅读 · 0 评论 -
微服务之事件驱动的数据管理(五)
一、微服务以及分布式数据管理中存在的问题单体应用通常使用单个关系型数据库,由此带来的好处在于应用能够使用 ACID 事务,后者提供了重要的操作特性:原子化:原子粒度的更改一致性:数据库的状态始终保持一致隔离:并发执行的事务显示为串行执行持久:事务一旦提交就不会被撤销如此,应用能够简单地开始事务、更改(插入、更新和删除)多行、以及提交事务。使用关系型数据库的另一大好处是它翻译 2017-08-03 09:52:08 · 474 阅读 · 0 评论 -
微服务之选择微服务部署策略(六)
一、诱因部署单体应用意味着运行大型应用的多个相同副本,通常提供若干台(N)服务器(物理机或虚拟机),在每台服务器上运行若干个(M)应用实例。部署单体应用并不总是简单明了,但还是比部署微服务应用简单。微服务应用由几十甚至数百个服务组成。服务用不同的语言和框架写成,每个都是一个小应用,包括特定的部署、资源、扩展和监控需求,例如,根据服务需求运行若干数量的服务实例。此外,每个服务实例必须配套提供翻译 2017-08-03 09:53:57 · 506 阅读 · 0 评论 -
微服务之使用微服务重构单体应用(七)
概述将单体应用转变为微服务的过程也是将应用现代化的过程,数十年来开发者们一直致力于此。因此,当把应用重构为微服务的时候,我们可以借鉴其中的理念。首先不要大规模地重写代码。大规模重写代码意味着你需要集中全部开发力量、从头构建全新的基于微服务的应用;听起来吸引人,但是充满风险,有可能以失败告终。正如 Martin Fowler 所言,“大规模重写唯一能够保证的只有大规模!”相反,应当采取逐翻译 2017-08-03 09:55:12 · 793 阅读 · 0 评论