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

应用组件:

首先对于整个程序的入口应该是网关,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微服务架构的思考的更多相关文章
- Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理
Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...
- Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案
Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...
- Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战
Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战 一.写在前面 在Java生鲜电商平台平台中相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这 ...
- Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析
Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...
- SpringCloud微服务架构和SOA架构
1,传统的三层架构 在传统的架构中,SSH,SSM,主要分为web 控制层,业务逻辑层,数据库访问层,单点项目,项目没有拆分,所有的开发任务全部写在一个项目中,耦合度比价高,如果程序中的一个功能出现了 ...
- SpringCloud微服务架构分布式组件如何共享session对象
一.简单做一个背景说明1.为说明问题,本文简单微服务架构示例如下 2.组件说明分布式架构,每个组件都是集群或者主备.具体说明如下:zuul service:网关,API调用都走zuul service ...
- 关于SpringCloud微服务架构概念的一点理解
目前微服务是非常火的架构或者说概念,也是在构建大型互联网项目时采用的架构方式. 1.单体架构单体架构,是指将开发好的项目打成war包,然后发布到tomcat等容器中的应用. 假设你正准备开发一款与Ub ...
- springcloud微服务架构搭建
SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...
- Rest构建分布式 SpringCloud微服务架构项目
一.开发环境:jdk 1.8.Maven 3.x.IDEA 2019.1.4.SpringBoot 2.0.7.spring Cloud 最新的稳定版 Finchley SR2 搭配 ...
随机推荐
- swift之xib关联UIView
有点坑爹,设置file owner 不行,搞了一早上,来说下怎么关联吧 自定义UIView要重写 required init(coder aDecoder: NSCoder) { super.init ...
- 浏览器get请求到java后台的值是乱码
get方式提交的参数编码,只支持iso8859-1编码. 因此,如果里面有中文,在后台就需要转换编码,如下 String zhongwen = request.getParameter(" ...
- keepalived+lvs高可用配置
global_defs { notification_email { test@qq.com } notification_email_from sns-lvs@gmail.com smtp_serv ...
- 项目二:品优购 第二天 AngularJS使用 brand商品页面的增删改查
品优购电商系统开发 第2章 品牌管理 传智播客.黑马程序员 1.前端框架AngularJS入门 1.1 AngularJS简介 AngularJS 诞生于2009年,由Misko Hevery 等人 ...
- win32多线程(三) 死锁
任何时候当一段代码需要两个(或更多)资源时,都有潜在性的死锁. void SwapLists(List *list1, List *list2) { List *tmp_list; EnterCrit ...
- Linux系统获取CPU温度
Linux系统获取CPU温度 摘自:https://jingyan.baidu.com/article/cbf0e500407d072eab289343.html 各位好,本篇将简单介绍如何在不同系列 ...
- Part5核心初始化_lesson4---关闭中断
1.关闭cpsr寄存器里面的I(中断)和F(快速中断)位: 2.设置中断屏蔽寄存器. 针对2440: 这是中断处理过程,当有中断源(没有子中断源)来的时候,它会把这个中断记录在SRCPND里面:它还要 ...
- IIS身份验证知识摘录
IIS 身份验证 ASP.NET 身份验证分为两个步骤.首先,Internet 信息服务 (IIS) 对用户进行身份验证,并创建一个 Windows 令牌来表示该用户.IIS 通过查看 IIS 元数据 ...
- hdu 2206 IP的计算(最全的注意事项)
注意: 1.非法字符(包括空格) 如下都是错的 A.145.124.4 192.168.18 123(用scanf输入的话,则接收的是:192.168.18) 2.'.'有且仅有3个,且不能连续出现, ...
- hdu 4279 Number(G++提交)
打表找规律: #include<stdio.h> #include<math.h> #define N 250 bool judge(int i,int j) { ;k< ...