0

Kafka 原理以及分区分配策略剖析

一、简介Apache Kafka 是一个分布式的流处理平台(分布式的基于发布/订阅模式的消息队列【Message Queue】)。流处理平台有以下3个特性:可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。可以储存流式的记录,并且有较好的容错性。可以在流式记录产生时就进行处理。1.1 消息队列的两种模式1.1.1 点对点模式生产者将消息发送到queue中,然后消费者从queue中取出并且消费消息。消息被消费以后,queue中不再存储,所以消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只能被一个消费者消费。1.1.2 发布/订阅模式生产...

阅读全文>>

0

如何使用RabbitMQ实现事件总线

1 前置阅读在阅读本文章之前,你可以先阅读:RabbitMQ入门什么是观察者模式什么是事件总线2 实现首先,事件源与事件处理的映射字典。private static Dictionary<string, List<object>> eventHandlers = new Dictionary<string, List<object>>(); 然后,初始化RabbitMQ,创建到服务器的连接,创建一个通道等public RabbitMQEventBus(IConnectionFactory connectionFactory, string...

阅读全文>>

0

spring security 业界标准加密策略源码详解及

密码发展历史果奔时代最初,密码以纯文本格式存储。假定密码是安全的,因为数据存储密码已保存在访问它所需的凭据中。但是,恶意用户能够使用SQL注入之类的攻击找到方法来获取用户名和密码的大型“数据转储”。随着越来越多的用户凭证成为公共安全专家,我们意识到我们需要做更多的事情来保护用户的密码。单向 Hash然后鼓励开发人员在通过诸如SHA-256之类的单向哈希运行密码后存储密码。由于散列是一种方式,并且计算给出的哈希密码很难计算,因此,找出系统中的每个密码都不值得。为了击败这个新系统,恶意用户决定创建称为Rainbow Tables的查找表。他们不必每次都猜测每个密码,而是只计算一次密码并将其存储在查...

阅读全文>>

0

Nacos Discovery和Eureka的区别

Eureka架构图:Eureka架构图1.服务注册(register):Eureka Client会通过发送REST请求的方式,向Eureka Server注册自己的服务。注册时,提供自身的元数据,比如ip地址、端口、运行状况指标、主页地址等信息。Eureka Server接收到注册请求后,就会把这些元数据信息存储在一个双层的Map中。 什么时候注册?在启动微服务的时候。2.服务续约(renew):在服务注册后,Eureka Client会维护一个心跳来持续通知Eureka Server,说明服务一直处于可用状态,防止被剔除。默认每隔30秒eureka.instance.lease-renew...

阅读全文>>

0

对API网关注册和接入的接口安全管理总结

今天谈下对API网关接入的接口服务进行安全管理方面的内容。在原来谈Kong网关的时候,曾经谈到Kong网关和安全相关的插件能力,其中包括了身份认证插件:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication认证实现。安全控制插件:ACL(访问控制)、CORS(跨域资源共享)、动态SSL、IP限制、爬虫检测实现。这些内容相对还是比较抽象,因此准备重新再整理下对接口的安全管理。接口安全实际上本身分为了传输安全,数据安全,访问控...

阅读全文>>

0

SSO的通用标准OpenID Connect

简介OpenID Connect简称为OIDC,已成为Internet上单点登录和身份管理的通用标准。 它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。OAuth2实际上只做了授权,而OpenID Connect在授权的基础上又加上了认证。OIDC的优点是:简单的基于JSON的身份令牌(JWT),并且完全兼容OAuth2协议。今天我们将会介绍一下OIDC的具体原理。OpenID Connect是什么OpenID Connect发布于2014年,是建立在OAuth 2.0协议之上的简单身份层,它允许客户端基于授权服务器或身份提供商(IdP)进行的身份验证来验证最...

阅读全文>>

0

SpringBoot中如何让List和Json自动互转

之前业务开发时,有一个字段接收的数据是Json格式的,并且需要以Json形式入库:数据库中是这样存储的,这里实际是一个Json数组。[   {     "label": "result1",     "name": "较好",     "readonly": false   },   {     "label": "result2", &...

阅读全文>>

0

OAuth 2.0授权框架详解

简介在现代的网站中,我们经常会遇到使用OAuth授权的情况,比如有一个比较小众的网站,需要用户登录,但是直接让用户注册就显得非常麻烦,用户可能因为这个原因而流失,那么该网站可以使用OAuth授权,借助于github或者其他的第三方网站的认证授权,来获取相关的用户信息,从而避免了用户注册的步骤。当然,很可能在第三方网站上授权获得用户信息之后,还需要在本网站填写一些必要的信息进行绑定,比如手机号,用户名等等。但是这比单纯的注册要方便太多了,也容易让用户接受。今天,我们将要讲解一下OAuth 2.0授权框架的构成,希望大家能够喜欢。OAuth的构成在传统的CS模式的授权系统中,如果我们想要借助第三方...

阅读全文>>

0

SpringBoot中如何实现接口的统一返回和异常的统一捕获

接口的统一返回在开发公司接口时,发现Controller层的接口返回都需要用一个Result包裹,如下图所示:图示代码中无论是创建接口或者查询接口,这里都需要用一个Result去接收,我们来看看Result的结构:这个Result中有几个字段:“code:状态码message:状态信息data:装载正真返回的数据exception:异常数据”然后我们测试下接口,看看返回样式:调用接口,返回格式为:{   "code": 200,   "message": "SUCCESS",   "data": { &n...

阅读全文>>

0

Spring Cloud系列Gateway:自定义断言规则

尽管Spring Cloud Gateway已经包含了很多路由匹配规则,有时候我们需要开发自定义路由匹配规则来满足需求,下面简单的介绍一下如何自定义路由匹配规则。需求转发请求参数中带有token并且token值为123的请求。实现实现有三步步骤,如下所示修改配置文件spring: profiles: customPredicate cloud: gateway: routes: - id: product-service # 路由ID 唯一 uri: http://localhost:8890 # 目标URL,...

阅读全文>>