PHP,DDD,CQRS,Event Sourcing,Kubernetes,Docker,Golang

0%

头图

RESTful接口现在很普遍,但是如果你作为一名web开发者,你应该知道对于不同的情况如何去选择一个最合适的HTTP方法有点困难。

对于开发REST接口来说,更新一个资源是常见的事,这里有两个开发者经常使用的HTTP方法:PUTPATCH,一般你会选择哪一个?

这两个方法看起来作用相同,都是更新一个服务的资源,但它们底层确是完成不同的事情。本篇文章将帮助你理解PUT和PATCH请求之间的区别,以便你可以设计一个专业的生产级别的API。

阅读全文 »

问题描述

当一个Pod被执行删除操作后,却长时间的处于Terminating状态,发生这样的情况可能是因为:

  • Pod有一个与其关联的finalizer,这个finalizer的任务没有完成。
  • Pod对中断信号没有响应

当我们执行kubectl get pods命令时,你将会看到这样的信息:

1
2
NAME                     READY     STATUS             RESTARTS   AGE
nginx-7ef9efa7cd-qasd2 1/1 Terminating 0 1h
阅读全文 »

编译器(Compiler)和解释器(Interpreter)是两种不同的工具,都可以将编程语言脚本语言转换为机器语言

编译器可以将整个程序转换为目标代码(object code),这些目标代码通常存储在文件中。目标代码也被称为二进制代码,在进行链接(link)后可以被机器直接执行。典型的编译型程序语言有CC++

解释器(Interpreter)能够直接执行程序或脚本语言中编写的指令,而不需要预先将这些程序或脚本语言转换成目标代码或者机器码。典型的解释型语言有PerlPythonPHPMatlab

以下是关于编译器解释器有趣的方面:

  1. 编译器解释器都能将源代码(文本文件)转换为其他符号;都能生成语法树(parse tree);都能生成立即指令(immediate instructions,即该指令中要操作的数据已经包含在了指令中,而不是在指令中操作数据所在的地址)。它们的不同之处是,编译器包含了链接器(linker),生成独立的机器代码程序,而解释器是直接执行高级语言所描述的操作。

  2. 一旦程序被编译了,则它的源代码对于运行程序来说没用处了。而解释型程序的源代码在运行程序的时候是始终都需要被用到。

  3. 解释型程序一般会比编译型程序运行效率低。

  4. Java程序首先会被编译器编译成中间状态(即字节码),然后再被解释器执行。

最近在研究和开发统一用户身份认证的系统,与此同时也了解到市场上有着如IAM、IDaaS这样的公有云产品,可以将应用快速接入实现统一用户身份认证、权限管理、SSO单点登录等功能。

我主要了解的是阿里云的IDaaS产品,一直认为阿里云产品文档是一个非常好的学习途径,在了解该类产品和功能过程中,阿里云在文档中除了说明产品的使用,更是加入了一些概念的讲解、知识的讲解。这里倒是要摘一些重要的概念。

阅读全文 »

关于IDaaS就不多说了,主要是理解一下IDaaS中,如何与应用系统进行帐户关系上的处理。目前了解有三种,但主要还是关注帐户映射(Account Mapping)和帐户关联Account Linking)两种做法,还有一种好像是基于角色的帐户。

阅读全文 »

PHP日志不仅仅记录错误,你也可以使用日志来追踪API或函数调用的性能,或统计你应用程序中重要事件的发生次数(例如登录、注册、下载等)。无论你是微服务还是单体架构,对PHP应用程序日志的全面记录将会让你能够追踪应用中关键点,并优化其性能。

PHP和开源的日志库让你可以选择在哪里发送日志和存储日志。如你在这篇文章中看到,将PHP日志存储在一个中央仓库是最简单的,并且为以后处理和分析日志提供了很大的便捷。当你使用专用的工具对日志文件进行tail并转发到中央仓库时,你的应用程序代码不需要承担缓冲日志和处理网络错误的代价。

在这篇文章,你将学习到:

  • 配置PHP System logger来实现自动记录错误日志
  • 使用PHP原生方法来记录自定义错误
  • 使用Monolog日志库来扩展你的日志收集能力
  • 捕获PHP异常和任意的事件
阅读全文 »