随笔分类 -  微服务

摘要:最近把我之前学SpringCloud所涉及到的知识以及我写的博客进行了比较系统的整理,目录如下。 1. 单体架构和微服务架构的比较 2.微服务所要解决的主要问题 3.SOA和微服务的比较 初识微服务 4. 服务拆分 微服务的服务拆分 5. 数据一致性 微服务的数据一致性 6.服务间的通信—RestT 阅读全文
posted @ 2018-07-27 20:43 开拖拉机的蜡笔小新 阅读(456) 评论(0) 推荐(0) 编辑
摘要:网关服务的作用: 身份认证、路由服务、为前端服务的后端—数据聚合 身份认证 如果我们的微服务和终端通信,势必要考虑身份认证,如果我们的微服务都与每个终端用户打交道,那么这些代码就需要拷贝多份, 并且植入到每个微服务业务代码中,这就造成业务代码和身份认证代码耦合,降低代码的复用性。 路由服务 由运维人 阅读全文
posted @ 2018-07-26 22:33 开拖拉机的蜡笔小新 阅读(768) 评论(0) 推荐(0) 编辑
摘要:如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。 Java有原生的API可用于发送HTTP请求,即java.net.URL、java.net.URLConnection,这些API很好用、很常用,但不够简便; 所以,也流行有许多Java HTTP请求的fr 阅读全文
posted @ 2018-07-26 18:10 开拖拉机的蜡笔小新 阅读(3616) 评论(0) 推荐(0) 编辑
摘要:什么是RPC? 是指远程过程调用,就是两个服务A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯) RPC 是一个请求 阅读全文
posted @ 2018-07-26 15:24 开拖拉机的蜡笔小新 阅读(2140) 评论(1) 推荐(1) 编辑
摘要:在微服务架构下,微服务被拆分成多个微小的服务,每个微小的服务都部署在不同的服务器实例上,当我们定位问题,检索日志的时候需要依次登录每台服务器进行检索。 这样是不是感觉很繁琐和效率低下。所以我们还需要一个工具来帮助集中收集、存储和搜索这些跟踪信息。 集中化管理日志后,日志的统计和检索又成为一件比较麻烦 阅读全文
posted @ 2018-05-16 17:18 开拖拉机的蜡笔小新 阅读(3461) 评论(0) 推荐(0) 编辑
摘要:随着业务的发展,系统规模也会越来越大,各微服务间的调用关系也越来越错综复杂。 通常一个客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果, 在复杂的微服务架构系统中,几乎每一个前端请求都会形成一条复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟过高或错误的时 阅读全文
posted @ 2018-05-16 15:29 开拖拉机的蜡笔小新 阅读(11444) 评论(1) 推荐(0) 编辑
摘要:前言在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元应用间通过服务注册与发现的方式互相依赖。 由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身问题出现调用故障或延迟, 而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不 阅读全文
posted @ 2018-05-12 10:13 开拖拉机的蜡笔小新 阅读(2411) 评论(0) 推荐(0) 编辑
摘要:一、使用JSON Web Token的好处? 1.性能问题。 JWT方式将用户状态分散到了客户端中,相比于session,可以明显减轻服务端的内存压力。 Session方式存储用户id的最大弊病在于Session是存储在服务器端的,所以需要占用大量服务器内存, 对于较大型应用而言可能还要保存许多的状 阅读全文
posted @ 2018-05-08 22:25 开拖拉机的蜡笔小新 阅读(39835) 评论(2) 推荐(2) 编辑
摘要:一、基于session的身份认证方案 1.方案图示 2.比较通用的鉴权流程实现如下: 在整个流程中有两个拦截器。 第一个拦截器AuthInteceptor是为了每一次的请求的时候都先去session中取user对象,如果session中有,就放user对象到threadlocal中。这是为了业务处理 阅读全文
posted @ 2018-05-08 21:18 开拖拉机的蜡笔小新 阅读(9300) 评论(0) 推荐(2) 编辑
摘要:在单体中对于key信息和用户信息是放在内存中放的,通过session进行管理。 微服务是要放在分布式缓存中,以实现服务的无状态化。 阅读全文
posted @ 2018-05-08 19:47 开拖拉机的蜡笔小新 阅读(4616) 评论(0) 推荐(0) 编辑
摘要:对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧——两个来自相同发起者的请求在服务器端是否具备上下文关系。 状态化请求,服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。 无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所 阅读全文
posted @ 2018-05-08 19:33 开拖拉机的蜡笔小新 阅读(25711) 评论(0) 推荐(0) 编辑
摘要:Eureka服务治理 在Eureka服务治理的框架中,有三种角色,服务注册中心、服务提供者、服务消费者。 1. 服务注册中心 Eureka服务端,支持高可用配置,能够集群部署,在Eureka服务治理设计中,所有节点既是服务提供方,也是服务消费方,服务注册中心也不例外。不同注册中心相互注册,以实现服务 阅读全文
posted @ 2018-05-08 16:29 开拖拉机的蜡笔小新 阅读(1922) 评论(0) 推荐(0) 编辑
摘要:1.微服务技术选型图如下图所示: 2.如何进行微服务架构设计: 深入业务功能, 满足功能性需求 非功能性需求关注扩展性,稳定性。可维护性,伸缩性,高可用,高性能 坚持kiss原则,防止简单问题复杂化 注: 可伸缩性是指系统通过增加或减少硬件水平从而提升或降低系统性能的难易程度。可伸缩性分为scale 阅读全文
posted @ 2018-05-07 16:21 开拖拉机的蜡笔小新 阅读(794) 评论(0) 推荐(0) 编辑
摘要:在微服务架构下,每个服务对应一个数据库,这就出现了原来单体中对同一个库的操作变成了跨服务数据库的操作。 遇到有事务约束的场景,比如转账汇款、订单状态和库存扣减,就从本地事务过渡到分布式事务来了。 可以用利用最终一致性解决这个问题 最终一致性:不同服务节点再一段时间后,节点间的数据会最终达到一致的状态 阅读全文
posted @ 2018-05-02 19:31 开拖拉机的蜡笔小新 阅读(1074) 评论(0) 推荐(0) 编辑
摘要:一、服务拆分的三个维度 三个维度拆分后,微服务的架构图就如下图所示: API GATEWAY服务网关: 身份认证、权限管理、服务动态路由、数据的聚合(比如房产详情页就有详情、评论、推荐,这些都属于不同的服务,这些我们就需要在服务网关中去做) Service Register:注册中心 服务的注册与发 阅读全文
posted @ 2018-05-02 19:21 开拖拉机的蜡笔小新 阅读(10409) 评论(2) 推荐(0) 编辑
摘要:一.单体架构和微服务架构的比较 1.单体架构的优势和不足 单体架构的优势:在项目的初期便于开发、便于测试、便于部署 单体架构的不足: 复杂性高-代码难以理解,难以修改和重构 交付效率低-项目整体部署耗时长、难以定位问题、影响范围广、风险大、发布频次低 伸缩性差-单体只能按整体进行横向扩展,无法分模块 阅读全文
posted @ 2018-05-02 18:51 开拖拉机的蜡笔小新 阅读(581) 评论(0) 推荐(0) 编辑
摘要:REST API风格 就是用URL定位资源,用HTTP描述操作。 看Url就知道要什么看http method就知道干什么看http status code就知道结果如何 主要是针对资源进行资源定位和资源操作。 资源定位:url的格式,url中不带参数。参数从url的路径中获得。 资源操作:使用ht 阅读全文
posted @ 2018-05-02 16:33 开拖拉机的蜡笔小新 阅读(500) 评论(0) 推荐(1) 编辑