Web service discovery (WSD) is the task of matchmaking a set of relevant web services. Quality of service (QoS) has recently been applied to represent non-functional properties of web services. Therefore, when those services provide the same functionality but have different QoS values, how to effectively filter out the services that cannot satisfy the QoS constraints and rank the remaining services is still an open research issue. In this paper, we propose an integrated approach that allows a service requester to specify a functionality request, multiple QoS constraints and their preferences, and our method discovers a set of the most appropriate ranked services with QoS utility aggregation. By conducting empirical experiments on simulated web services, we validate the feasibility of our service discovery approach. The running example shows that, our approach can find more appropriate services by the satisfiability of multiple QoS constraints and the ranking of aggregated QoS.