读《聊聊‘架构’》— 尚不够架构

内容摘录:

  • 业务和架构,是压在软件从业人员身上的两座大山。页软件从业人员手上却只有一个武器:技术。可是这个武器还时灵时不灵,
  • 业务和架构都是处理人的问题。而技术人员最讨厌处理的就是人的问题,心里面厌恶,却又无法逃避。
  • 架构的目的并非产生一个业务之外新的东西出来,只是为了让业务长得更加高大强壮,服务于更多的人。
  • 做架构的人必须亲自体验业务,感受业务,才可能真正认识业务的个性,真正认识业务所面临的问题。
  • 识别问题这个能力基本上就决定了架构师的水平。
  • 识别了问题的主体,自然而然地就附带了这么多的隐含信息。挖掘出隐含信息,就自然而然能够问出来其他问题了,
  • 架构切分实际就是对利益相关人的利益进行切分或合并,使得每个利益相关人的权责是对等的,每个利益相关人可以为自己的利益负责。
  • 架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
  • 一个好的架构拆分,会形成一棵树,慢慢会长成一片森林。
  • 架构的目的就是为了增长。
  • 架构师有权力的同时也有其义务,也是权责对等的。架构师要时时把增长放在自己的第一考虑要素,把识别核心生命周期及其主体作为第一思考,这样才能确保权力的合理分配,保证增长的效率。这是真正的架构师和普通人思考的区别。
  • 要知道,工作是否完成由业务人员决定,而不是软件工程师自己。
  • 随着对业务的熟悉,对时间的恐惧才会慢慢地消失。对业务领域理解得越深入,就越知道如何去发现问题,慢慢就成为业务专家了。
  • 形象一点说,业务是硬币,架构和技术是硬币的两面。
  • 要知道开源的只是代码而已,而代码并非软件生命周期的核心。
  • 软件生命周期的核心是代码的运行生命周期和用户访问生命周期,而不是代码的建立生命周期。
  • 很多软件工程师学了大量的算法和计算机基础,然而在工作中发现派不上用场。这是非常正常的,因为这些内容是为了在科学领域做研究准备的。而在业务领域,大多是如何把现有的业务在软件中模拟出来的问题,并没有太多高深的数学问题。
  • 软件的拆分必须要和业务的拆分对应起来,
  • 很多人总是拆不好的原因,就是忽视了业务生命周期的分析。因为软件的核心是模拟业务,而业务代码又是按照业务的生命周期组织的,
  • 大数据其实说的是新的针对大量数据的处理技术,并非“大数据”这个概念表面文字那样是说“数据”本身。
  • 数据库事务只应该存在于和数据库打交道的存储代码中。

 

推荐你去品一品此书。

20210110221948

 

 

在spring-oauth-server中将AccessToken存入Redis的配置

为了满足高性能的要求,spring-oauth-server中增加了使用redis存储 AccessToken的功能,以达到更高的性能要求。

以下配置是将AccessToken存入Redis的参考步骤。

前提:使用spring-oauth-server的config分支,并已经安装Redis服务

 

1.pom.xml中增加spring-boot的redis dependency.

redis-pom

 

2.application.properties中增加redis的配置属性

redis-prop

 

3.配置OAuth2中TokenStore的Redis实现:RedisTokenStore

config

(prefix值 可根据实际需要进行修改;默认的实现使用JdbcTokenStore)

 

在以上配置完成后,启动redis服务,并将spring-oauth-server重启后,即完成了将AccessToken配置存入Redis的功能,

测试获取AccessToken后,可在redis中查看到对应的数据,如下所示:

redis-log

 

spring-oauth-server的redis配置代码分支:https://gitee.com/shengzhao/spring-oauth-server/tree/config-redis/

 

 

Spring-Boot使用总结

在Spring-Boot的使用过程中,总结与扩展如下几点,后续会持续跟进。

1. 修改默认配置文件 application.properties

Spring-Boot项目默认从classpath加载 application.properties, 但如果需要自定义项目的配置文件名,可使用@PropertySource 注解指定具体的配置文件名(可多个)

custom-properties

一般在使用 @SpringBootApplication 或 @Configuration 注解的地方添加 @PropertySource 指定具体的配置文件即可。

 

2.多个Spring-Boot项目如何部署在一个服务器中(如Tomcat)

默认情况下,Spring-Boot项目不能多个部署在一服务器中,这主要是由于jmx的原因引起的,所以如果想把多个项目部署在一服务器中,有两种方法

方法一:禁用 jmx, 在配置文件中添加 spring.jmx.enabled=false 配置项,禁用jmx功能

disable-jmx

方法二:若需要启用jmx,则在配置文件中指定jmx的default-domain 参数值(不同项目的参数值要不相同),如下所示:

jmx-domain

 

3. 解决启动Spring-Boot项目时的异常:If you want an embedded database (H2, HSQL or Derby)…

20181013132649

如上图所示,如果在启动时报这异常,解决办法是在项目的pom.xml中增加 H2,HSQL或Derby 的 dependency 即可,如下图

h2-dep

该异常一般在 Spring-Boot 1.x 版本中会出现,在使用中升级到 Spring-Boot  2.0.2.RELEASE版本后,不需要加这个 dependency 也能正常工作。

所以解决的另一办法就是升级Spring-Boot 的版本到 2.0.2.RELEASE 或更高的版本。