1. 程式人生 > 實用技巧 >微服務springcloud專案的瞭解與實現

微服務springcloud專案的瞭解與實現

1、微服務

1.1、特點

①.單一職責

②.自治

1.2、元件

①.Eureka:服務治理元件,包含了服務註冊中心,服務註冊與發現機制的實現

②.Zuul:閘道器元件

③.Ribbon:負載均衡

④.Fergn:服務呼叫

⑤.Hystrix:容錯管理元件

2、Eureka元件實現

①、建立新的project,依賴選擇如下

②、pom.xml檔案中新增mybatis依賴

        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</
artifactId> <version>2.0.4</version> </dependency>

③、新建User實體類

④、新增UserMapper介面、UserService類和UserController類

UserMapper

@org.apache.ibatis.annotations.Mapper
public interface UserMapper extends Mapper<User> {
}

UserService

@Service
public class UserService {
    @Autowired(required 
= false) private UserMapper userMapper; public User queryById(Long id){ return this.userMapper.selectByPrimaryKey(id); } }

UserController

@RestController
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping("{id}")
    
public User queryById(@PathVariable("id") Long id){ return this.userService.queryById(id); } }

⑤、配置application檔案,配置內容與上個專案相同

⑥、新建model:consumer,依賴選擇Spring Web

⑦、在ConsumerApplication檔案中填寫如下內容

@SpringBootApplication
public class ConsumerApplication {
    //註冊RestTemplate
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

⑧、將application中埠改為80

⑨、新建UserController類與User實體類,User實體與上面的一樣

@Controller
@RequestMapping("consumer/user")
public class UserController {
    @Autowired
    private RestTemplate restTemplate;
    @GetMapping
    @ResponseBody
    public User queryById(@RequestParam("id") Long id){
        User user = this.restTemplate.getForObject("http://localhost:8081/user/"+id,User.class);
        return user;
    }
}

⑩、新建model:eureka,依賴選擇Eureka Service

⑪、配置eureka中的application檔案

server:
  port: 10086
spring:
  application:
    name: eureka-server #應用名稱,會在Eureka中顯示
eureka:
  client:
    service-url: #eurekaserver的地址,現在是自己的地址,如果是叢集,需要加上其他server地址
      defaultZone: http://localhost:${server.port}/eureka

⑫、在EurekaApplication中進行宣告

@SpringBootApplication
@EnableEurekaServer  //聲明當前springboot應用是一個eureka服務中心
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }

}