在网上找到一张关于微服务体系架构的图

应用组件:

首先对于整个程序的入口应该是网关,zuul部分

这个组件在springcloud中的gateway服务之后,zuul可以进行网关分配,根据想应的路劲进行分到具体的服务,其实zuul就相当于门面模式的设计方法:

如下是在网上找到的一张图片,可以很清晰的看到门面模式的设计方式,就是一个统一入口,再根据这个入口进行分配到相关的部分去执行相关的服务

那么存在什么问题呢

一   用户信息问题,权限问题

在微服务模块,用户只在一个模块中登录过,所以用户信息只存在一个模块中,那么怎么去解决呢,而且有些模块是需要登录的,有些模块是不需要登录的,怎么去处理这些问题呢,

其实可以采用单点登录的解决方式,来进行

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; /**
* 描述: 过滤器 token
*
**/
public class TokenFilter extends ZuulFilter { private final Logger LOGGER = LoggerFactory.getLogger(TokenFilter.class); @Override
public String filterType() {
return "pre"; // 可以在请求被路由之前调用
} @Override
public int filterOrder() {
return ; // filter执行顺序,通过数字指定 ,优先级为0,数字越大,优先级越低
} @Override
public boolean shouldFilter() {
return true; // 是否执行该过滤器,此处为true,说明需要过滤
} @Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest(); LOGGER.info("--->>> TokenFilter {},{}", request.getMethod(), request.getRequestURL().toString()); String token = request.getParameter("token");// 获取请求的参数 if (StringUtils.isNotBlank(token)) {
ctx.setSendZuulResponse(true); //对请求进行路由
ctx.setResponseStatusCode();
ctx.set("isSuccess", true);
return null;
} else {
ctx.setSendZuulResponse(false); //不对其进行路由
ctx.setResponseStatusCode();
ctx.setResponseBody("token is empty");
ctx.set("isSuccess", false);
return null;
}
} }

看上面就知道整个系统是需要登录携带token的,但是是不可以进行的,并不能对每个接口或者单独的服务进行限制

可以采用单点登录的方式进行,让用户每次携带token,并在项目中验证token的权限,如果单点登录服务器中有相关的token信息就放置到自己的模块中,生成局部的token信息,就可以解决,只是用户登录第一次之后需要进行相关的信息

同时也可以采用thradlocal这个类来存储用户信息,避免每次都是需要调取相关的服务进行用户信息的查询。也可以存储相关的权限。

二 错误排查

  当你一个服务调取了很多的服务,那么一旦当服务出现问题了就会很难进行排查,所以需要我们引入更新的技术去解决这个问题,

可以引入zipkin这个进行链路追踪

可以通过这个追踪到相关服务,同时可以查询到相关接口的调用时间,并且对相关接口的优化。

springcloud微服务架构的思考的更多相关文章

  1. Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理

    Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...

  2. Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案

    Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...

  3. Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战

    Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战 一.写在前面 在Java生鲜电商平台平台中相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这 ...

  4. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  5. SpringCloud微服务架构和SOA架构

    1,传统的三层架构 在传统的架构中,SSH,SSM,主要分为web 控制层,业务逻辑层,数据库访问层,单点项目,项目没有拆分,所有的开发任务全部写在一个项目中,耦合度比价高,如果程序中的一个功能出现了 ...

  6. SpringCloud微服务架构分布式组件如何共享session对象

    一.简单做一个背景说明1.为说明问题,本文简单微服务架构示例如下 2.组件说明分布式架构,每个组件都是集群或者主备.具体说明如下:zuul service:网关,API调用都走zuul service ...

  7. 关于SpringCloud微服务架构概念的一点理解

    目前微服务是非常火的架构或者说概念,也是在构建大型互联网项目时采用的架构方式. 1.单体架构单体架构,是指将开发好的项目打成war包,然后发布到tomcat等容器中的应用. 假设你正准备开发一款与Ub ...

  8. springcloud微服务架构搭建

    SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...

  9. Rest构建分布式 SpringCloud微服务架构项目

    一.开发环境:jdk  1.8.Maven  3.x.IDEA  2019.1.4.SpringBoot   2.0.7.spring Cloud  最新的稳定版  Finchley SR2   搭配 ...

随机推荐

  1. js控制图片放大缩小的简易版

    js代码: function bb_img_onmousewheel(e, o) { var zoom = parseInt(o.style.zoom, 10) || 100; zoom += eve ...

  2. tomcat报503 或者无法启动应用

    一般都是配置文件有问题,或者路径问题,或者jvm的参数路径问题.... 总之,报错实在是不清楚!这点比resin差远了!!

  3. Servlet接口应用(开发servlet三种方式)

    参见 文库/java/javaEE全新学习教程2.2节 1.通过URL调用 2通过提交表单 3超链接 4 javascript写一个函数,调用这个函数 1,首先在工程的WebRoot文件夹下建立一个j ...

  4. ubuntu 环境变量设置

    一:用于当前终端:在当前终端中输入:export PATH=$PATH:<你的要加入的路径>不过上面的方法只适用于当前终端,一旦当前终端关闭或在另一个终端中,则无效.export NDK_ ...

  5. JSTL标签之core标签的使用

    参考:http://blog.csdn.net/qq_25827845/article/details/53311722 核心标签库的导入 <%@ taglib prefix="c&q ...

  6. django 1.8 官方文档翻译:13-12 验证器

    django 1.8 官方文档翻译:13-12 验证器 2015年09月20日 21:36:18 ApacheCN_飞龙 阅读数:639  https://blog.csdn.net/wizardfo ...

  7. Django rest_framework----序列化组件

    生成hypermedialink serializer.pclass BookModelSerializers(serializers.ModelSerializer): class Meta: mo ...

  8. 【原创】boost::recursive_mutex请小心使用

    recursive_mutex会减少死锁几率?恩看上去的确如此,但是事实上呢?我们从BOOST的官方逻辑去理解: recursive_mutex类可多次进入锁,这样在递归时可以避免一次死锁的几率,这是 ...

  9. What is difference between 3-layer architecture and MVC architecture?

    By Vikas Singh on Sep 26, 2014 In 3-layer architecture  3-layer architecture separates the applicati ...

  10. HDU 3724 Encoded Barcodes (Trie)

    题意:给n个字符串,给m个询问,每个询问给k个条形码.每个条形码由8个小码组成,每个小码有相应的宽度,已知一个条形码的宽度只有2种,宽的表示1,窄的表示0.并且宽的宽度是窄的宽度的2倍.由于扫描的时候 ...