《软件体系结构》大作业指导
软工 2002 LYR
软件体系结构大作业指导
本指导分 3 个版本,极速版,省流版,教学版。三个版本适合不同人群,请
您酌情选择。同时,在第四章,本人将帮助您使用该指导
一、 极速版
1. 打开 IDEA,打开 microservice_arch_springcloud 项目,进入
com.github.fenixsoft.bookstore.paymnet/domain/service/PaymentService
2. 找到 producePayment 函数并在如下位置添加一行代码即可
total *= 0.7;
即便是笨蛋也能学会,但问题在于该方法无法做到真正的添加一个优惠券,
只是把所有支付账单的价格*0.7,多来几次必露馅,因此只能用于蒙混过关。
《软件体系结构》大作业指导
软工 2002 LYR
eureka:
client:
serviceUrl:
defaultZone:
http://${REGISTRY_HOST:localhost}:${REGISTRY_PORT:8761}/eureka/
database: hsqldb
spring:
datasource:
schema: "classpath:db/${database}/schema.sql"
data: "classpath:db/${database}/data.sql"
sql-script-encoding: UTF-8
jpa:
show-sql: true
hibernate:
ddl-auto: none
open-in-view: false
resources:
chain:
compressed: true
cache: true
cache:
period: 86400
security:
oauth2:
client:
# OAuth 的 ClientID 和 ClientSecret 是写在 OAuthClientDetailsService 中
的
# 实际生产中要考虑好如何获取验证服务器的 Endpoint、动态增加微服务客户
端、如何分发客户端密钥等问题,而在演示工程中并不关注这些
clientId: coupon
《软件体系结构》大作业指导
软工 2002 LYR
clientSecret: coupon_secret
accessTokenUri:
http://${AUTH_HOST:localhost}:${AUTH_PORT:8301}/oauth/token
grant-type: client_credentials
scope: SERVICE
resource:
userInfoUri: BUGFIX
logging:
pattern:
console:
"%clr(%d{HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(-){f
aint} %clr([%t]){faint} %clr(%-
40logger{39}){cyan}[%line]%clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION
_WORD:%wEx}"
level:
root: INFO
server:
port: ${PORT:0}
5. 同时修改 gateway.yaml
eureka:
client:
serviceUrl:
defaultZone:
http://${REGISTRY_HOST:localhost}:${REGISTRY_PORT:8761}/eureka/
spring:
cloud:
gateway:
discovery:
locator:
# 开启从注册中心动态创建路由的功能,利用微服务名进行路由
enabled: true
# 忽略大小写匹配,默认为 false。
# 当 eureka 自动大写 serviceId 时很有用。 所以 MYSERIVCE,会匹配
/myservice/**
lowerCaseServiceId: true
routes:
- id: http
uri: https://www.baidu.com/
predicates:
- Path=/restful/baidu/**
《软件体系结构》大作业指导
软工 2002 LYR
# 某业务服务
- id: account
uri: lb://account
predicates:
- Path=/restful/accounts/**
- id: coupon
uri: lb://coupon
predicates:
- Path=/restful/coupons/**
- id: payment
uri: lb://payment
predicates:
- Path=/restful/pay/**,/restful/settlements/**
- id: warehouse
uri: lb://warehouse
predicates:
- Path=/restful/products/**,/restful/advertisements/**
- id: security
uri: lb://security
predicates:
- Path=/oauth/**
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 20000
warehouse:
ribbon:
# 代表 Ribbon 使用的负载均衡策略
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
ribbon:
ReadTimeout: 20000
ConnectTimeout: 20000
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
zuul:
ignoredServices: '*'
host:
connect-timeout-millis: 20000
socket-timeout-millis: 20000
routes: