Java日知录

一个坚持原创,有态度的博客!

0%

在前面讲解容器基础时,我曾经提到过一个 Linux 容器能看见的“网络栈”,实际上是被隔离在它自己的 Network Namespace 当中的。

而所谓“网络栈”,就包括了:网卡(Network Interface)、回环设备(Loopback Device)、路由表(Routing Table)和 iptables 规则。对于一个进程来说,这些要素,其实就构成了它发起和响应网络请求的基本环境。

需要指出的是,作为一个容器,它可以声明直接使用宿主机的网络栈(–net=host),即:不开启 Network Namespace,比如:

阅读全文 »

问题

在Spring Cloud项目中,前后端分离目前很常见,在调试时,会遇到两种情况的跨域:

  1. 前端页面通过不同域名或IP访问微服务的后台,例如前端人员会在本地起HttpServer 直连后台开发本地起的服务,此时,如果不加任何配置,前端页面的请求会被浏览器跨域限制拦截,所以,业务服务常常会添加如下代码设置全局跨域:
阅读全文 »

概述&选型

消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要用于三种典型场景:应用解耦流量消峰消息分发

目前主流的 MQ 主要是 Rocketmq、kafka、Rabbitmq,Rocketmq 相比于 Rabbitmq、kafka 具有主要优势特性有:

  • 支持事务型消息(消息发送和 DB 操作保持两方的最终一致性,rabbitmq 和 kafka 不支持)
  • 支持结合 rocketmq 的多个系统之间数据最终一致性(多方事务,二方事务是前提)
  • 支持 18 个级别的延迟消息(rabbitmq 和 kafka 不支持)
  • 支持指定次数和时间间隔的失败消息重发(kafka 不支持,rabbitmq 需要手动确认)
  • 支持 consumer 端 tag 过滤,减少不必要的网络传输(rabbitmq 和 kafka 不支持)
  • 支持重复消费(rabbitmq 不支持,kafka 支持)
阅读全文 »

概述

大家都知道在oauth2认证体系中有四种授权模式:

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 客户端模式(client credentials)
  • 密码模式(password)

那么如何新增一个自定义的授权模式,比如像下面这样根据手机号和短信验证码进行登录呢?

阅读全文 »

概述

在 OAuth2 体系中认证通过后返回的令牌信息分为两大类:不透明令牌(opaque tokens)透明令牌(not opaque tokens)。

不透明令牌 就是一种无可读性的令牌,一般来说就是一段普通的 UUID 字符串。使用不透明令牌会降低系统性能和可用性,并且增加延迟,因为资源服务不知道这个令牌是什么,代表谁,需要调用认证服务器获取用户信息接口,如下就是我们在资源服务器中的配置,需要指明认证服务器的接口地址。

阅读全文 »

在之前的文章中,我为你介绍了 Service 机制的工作原理。通过这些讲解,你应该能够明白这样一个事实:Service 的访问信息在 Kubernetes 集群之外,其实是无效的。

这其实也容易理解:所谓 Service 的访问入口,其实就是每台宿主机上由 kube-proxy 生成的 iptables 规则,以及 kube-dns 生成的 DNS 记录。而一旦离开了这个集群,这些信息对用户来说,也就自然没有作用了。

所以,在使用 Kubernetes 的 Service 时,一个必须要面对和解决的问题就是:如何从外部(Kubernetes 集群之外),访问到 Kubernetes 里创建的 Service?

这里最常用的一种方式就是:NodePort。我来为你举个例子。

阅读全文 »

大家好,我是飘渺。

MongoDB与Elasticsearch作为两款非常流行的NoSQL数据库,日常我们经常需要讨论两者之间的区别与联系,方便我们进行技术选型。

今天我们就来全面对比一下两者之间的差别。

首先我们先看一张表格,全面了解一下他们之间的总体区别:

阅读全文 »

领域模型的概念及作用

领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。概念比较深奥,其实说白了就是我们把基于对业务的理解画成一个类图,并画出这些类之间的关系(面向对象)。

领域模型可以整理业务中的概念以及关系,帮助团队中的成员对业务的理解保持一致,往后可以指导数据库设计、系统功能设计、指导开发。在整个系统建设周期能起到 上接需求,下承开发 的作用。

那既然领域模型如此重要,我们是不是要在类图中尽可能的展示对象的属性和方法,以便更好的指导后续的开发设计。

阅读全文 »

前言

权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。

目前在公司负责权限这块, 所以对权限这块的设计比较熟悉, 公司采用微服务架构, 权限系统自然就独立出来了, 其他业务系统包括商品中心, 订单中心, 用户中心, 仓库系统, 小程序, 多个 APP 等十几个系统和终端。

阅读全文 »